【发布时间】:2015-04-10 09:17:27
【问题描述】:
首先,请记住我是 linux 新手。 我在编译我的项目时遇到问题。我不断收到以下错误:
/usr/bin/ld:CMakeFiles/Robot.dir/source/ModuleHandler.cpp.o:未定义对符号“dlsym@@GLIBC_2.4”的引用 //lib/arm-linux-gnueabihf/libdl.so.2:添加符号时出错:命令行中缺少 DSO collect2: ld 返回 1 个退出状态
首先正确的目录是:/usr/lib/arm-linux-gnueabihf/libdl.so
而不是://lib/arm-linux-gnueabihf/libdl.so
我尝试更新我的 ldconfig.conf 文件,设置 LD_LIBRARY_PATH,使用 ldd -r
无济于事。
CMAKE 用于创建 make 文件。
我以前编译时没有遇到任何问题。它是在我进行 apt-get 升级或尝试从 VS 交叉编译之后开始的。
任何建议将不胜感激!
//内森
【问题讨论】:
-
您是否正在尝试将您的程序与特定于 ARM 的库链接?
-
不知道。假设它是……?
-
嗯,很可能是个错误。通常,如果您有一个 x86 兼容的工作站,您应该使用不会尝试使用库进行交叉编译的“普通”编译器。您使用什么硬件和 Linux 发行版?
-
谢谢。我通过添加解决了这个问题: SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ldl -lpthread")
-
谢谢。我通过在 CMakeLists.txt 文件中添加: SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ldl -lpthread") 解决了这个问题。但如果你有兴趣。我一直“通常”在我的 Raspberry Pi(运行 Raspbian Wheezy)上远程编译我的项目。但是我一直在 Visual Studio 中编码,将源文件复制到 Pi,然后编译。不是很有效。因此,我尝试使用 VisualGDB 进行构建,这很可能是在问题出现时。不过再次感谢!