【发布时间】:2015-02-20 19:32:51
【问题描述】:
我正在使用 arm-linux-gnueabi-g++ 版本 4.7.3 进行编译。
我在以下位置安装了 arm-linux-gnueabi 库:
/usr/arm-linux-gnueabi/lib,它包含libdl.a、libdl.so、libdl.so.2、 和 libdl-2.19.so。
libdl.so 链接到 libdl.so.2,而 libdl.so.2 链接到 libdl-2.19.so。
我正在尝试链接 dl 库(请参阅下面的命令字符串),但我总是收到未定义的引用错误。
arm-linux-gnueabi-g++ -I. -I../ -I../Comms/Linux -Wall -DLINUX -fpic -o ../../work/MyProgram main.o
-L../../work -L/usr/arm-linux-gnueabi/lib -lComms -lConsole -lUtilities -ldl
../../work/libUtilities.so: undefined reference to `dlsym'
../../work/libUtilities.so: undefined reference to `dlopen'
collect2: error: ld returned 1 exit status
如果我使用以下命令使用 g++ 4.8.2 进行编译,那么我的程序可以正常编译、链接和执行。
g++ -I. -I../ -I../Comms/Linux -Wall -DLINUX -fpic -o ../../work/MyProgram main.o
-L../../work -lComms -lConsole -lUtilities -ldl
显然它找不到 libdl.so 库;我认为通过使用-L 标志将路径添加到相应库的位置可以解决问题,但它没有。
ARM 编译器命令缺少什么?
【问题讨论】:
标签: c++ linux arm shared-libraries undefined-reference