C++ &引用;命令行中缺少DSO“;交叉编译MOSQUITO示例时

C++ &引用;命令行中缺少DSO“;交叉编译MOSQUITO示例时,c++,makefile,cross-compiling,mosquitto,libmosquitto,C++,Makefile,Cross Compiling,Mosquitto,Libmosquitto,我正在尝试交叉编译mosquitto示例程序。起初,我在主机PC上编译了MOSQUITO示例,它运行得很好。生成文件如下所示: CFLAGS=-Wall -ggdb -I../../lib -I../../lib/cpp LDFLAGS=-L../../lib ../../lib/cpp/libmosquittopp.so.1 ../../lib/libmosquitto.so.1 .PHONY: all clean all : mqtt_temperature_conversion mq

我正在尝试交叉编译mosquitto示例程序。起初,我在主机PC上编译了MOSQUITO示例,它运行得很好。生成文件如下所示:

CFLAGS=-Wall -ggdb -I../../lib -I../../lib/cpp
LDFLAGS=-L../../lib ../../lib/cpp/libmosquittopp.so.1 ../../lib/libmosquitto.so.1

.PHONY: all clean

all : mqtt_temperature_conversion

mqtt_temperature_conversion : main.o temperature_conversion.o
    ${CXX} $^ -o $@ ${LDFLAGS}

main.o : main.cpp
    ${CXX} -c $^ -o $@ ${CFLAGS}

temperature_conversion.o : temperature_conversion.cpp
    ${CXX} -c $^ -o $@ ${CFLAGS}

clean : 
    -rm -f *.o mqtt_temperature_conversion
然后,我添加以下行以交叉编译此程序:

CXX=arm-unknown-linux-gnueabi-gcc
AR=arm-unknown-linux-gnueabi-ar
AS=arm-unknown-linux-gnueabi-as
LD=arm-unknown-linux-gnueabi-ld
RANLIB=arm-unknown-linux-gnueabi-ranlib
然后给出一条错误消息:

/home/Tools/tool_chain/bin/../lib/gcc/arm-unknown-linux-
gnueabi/5.4.0/../../../../arm-unknown-linux-gnueabi/bin/ld: main.o: 
undefined reference to symbol '_ZdlPv@@GLIBCXX_3.4'


/home/Tools/tool_chain/bin/../sysroot/usr/lib/libstdc++.so.6: 
error adding symbols: DSO missing from command line
我很困惑。我在谷歌上搜索了这个错误,但似乎没有一个是相关的。因为当我使用主机PC编译器编译时,一切都正常。因此,这不应该是一个lib问题

更新: 所以我不知道发生了什么,然后我自己做了一个测试项目。Makefile如下所示:(我忽略了交叉工具链variabl部分以保存一些位置)

成功了吗?!我向董事会闪现了它的可执行文件似乎是正确的

现在我更糊涂了

LD=arm-unknown-linux-gnueabi-ld
永远不要直接使用
ld
。您希望使用
g++
作为调用链接器的驱动程序,否则将出现链接器问题

LD=$(CXX)

很可能您的交叉编译器glibc版本太旧了。@n.m.您好,答案是thnx。我检查了一下,它(2.25)实际上比主机的(2.23)更新了…@n.m.我尝试了另一个makefile,它成功了…我现在更困惑发生了什么…对不起,错误的库和错误的结论!有关答案,请参见answer.thnx。当我看到你的答案时,我意识到我选择了gcc而不是g++作为cpp程序。。。。我是哑巴
LD=$(CXX)