未定义符号'dlsym@@GLIBC_2.4'的引用

11

首先,请记住我对Linux是新手。 我在编译项目时遇到问题,不断出现以下错误:

/usr/bin/ld: CMakeFiles/Robot.dir/source/ModuleHandler.cpp.o: 对符号 'dlsym@@GLIBC_2.4' 未定义的引用 //lib/arm-linux-gnueabihf/libdl.so.2: error adding symbols: DSO missing from command line collect2: ld returned 1 exit status

首先,正确的目录是:/usr/lib/arm-linux-gnueabihf/libdl.so 而不是://lib/arm-linux-gnueabihf/libdl.so

我尝试更新了我的ldconfig.conf文件、设置了LD_LIBRARY_PATH、使用了ldd -r,但都没有成功。

CMAKE用于创建make文件。

以前我编译没遇到过问题。这个问题可能是在我进行了apt-get升级或从Visual Studio尝试交叉编译后开始出现的。

非常感谢任何建议!

//Nathan


你是不是希望将你的程序链接到一个ARM特定的库? - user3159253
不知道。假设它是什么? - Nathan
很可能这是一个错误。通常,如果您有一台x86兼容的工作站,应该使用一个“普通”的编译器,而不是尝试使用用于交叉编译的库。您使用什么硬件和Linux发行版? - user3159253
谢谢。我通过添加以下内容解决了问题: SET(CMAKE_CXX_FLAGS“$ {CMAKE_CXX_FLAGS} -ldl -lpthread”) - Nathan
1
谢谢。我通过在CMakeLists.txt文件中添加以下内容解决了问题: SET(CMAKE_CXX_FLAGS“$ {CMAKE_CXX_FLAGS} -ldl -lpthread”) 但是如果您感兴趣的话,我一直在远程编译我的树莓派项目(运行Raspbian Wheezy)。但是我一直在Visual Studio中编码,将源文件复制到Pi上然后编译。效率不高。因此,我尝试使用VisualGDB进行构建,这很可能是问题出现的原因。 无论如何,再次感谢! - Nathan
3个回答

29
一般来说,找不到符号的 man 页面将告诉您需要链接哪些库。在你的情况下:注意以下行:http://linux.die.net/man/3/dlsym 链接时请添加 -ldl

2
简而言之:./configure LIBS='-ldl' - Константин Ван

0

我改用clang编译器,问题得到了解决。

export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
cmake ..

0
对我来说,重新安装libglfw3-dev解决了问题(sudo apt install libglfw3-dev)。我怀疑这可能是在更新期间被删除了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接