【问题标题】:undefined reference to symbol 'dlsym@@GLIBC_2.4'未定义对符号“dlsym@@GLIBC_2.4”的引用
【发布时间】: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 进行构建,这很可能是在问题出现时。不过再次感谢!

标签: linux ldd


【解决方案1】:

一般来说,您找不到符号的手册页会告诉您需要链接哪些库。在您的情况下:

http://linux.die.net/man/3/dlsym

注意这一行:

-ldl链接。

【讨论】:

  • 简而言之:./configure LIBS='-ldl'.
【解决方案2】:

对我来说,重新安装 libglfw3-dev 有效 (sudo apt install libglfw3-dev)。我怀疑这已在更新期间被删除。

【讨论】:

    猜你喜欢
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2011-07-02
    • 2013-12-20
    • 2016-10-07
    • 2015-02-20
    • 1970-01-01
    相关资源
    最近更新 更多