gpt4 book ai didi

c++ - "DSO missing from command line"while cross compiling mosquitto example

转载 作者:行者123 更新时间:2023-11-28 04:56:30 24 4
gpt4 key购买 nike

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

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如下:(我忽略了交叉工具链变量部分以节省一些地方)

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


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

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

成功了吗?!我把它闪到板上,可执行文件似乎是正确的。

现在我更糊涂了

最佳答案

LD=arm-unknown-linux-gnueabi-ld

永远不要直接使用ld。您希望使用 g++ 作为调用链接器的驱动程序,否则您遇到链接器问题。

LD=$(CXX)

关于c++ - "DSO missing from command line"while cross compiling mosquitto example,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47013154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com