首页 > 解决方案 > 未知的 GCC 链接器错误,但构建成功

问题描述

我正在尝试编译一个链接到 Eclipse C/C++ IDE 中的 FMOD 库的程序。我什至没有包含任何库的标头,我只将共享库添加到项目依赖项中,并且出现以下链接错误:

Building target: Adventum
Invoking: GCC C++ Linker
g++-8 -L"/home/jkmcameron/Workplace/git/Adventum/Adventum/libs/GLFW" -L"/home/jkmcameron/Workplace/git/Adventum/Adventum/libs/Python" -L"/home/jkmcameron/Workplace/git/Adventum/Adventum/libs/FMOD" -o "Adventum"  ./src/adventum/graphics/Display.o  ./src/adventum/Main.o ./src/adventum/ScriptLoader.o   -lglfw3 -lpython3.8 -lfmodL -ldl -lpthread -lX11 -lvulkan
/usr/bin/ld: /home/jkmcameron/Workplace/git/Adventum/Adventum/libs/FMOD/libfmodL.so: .dynsym local symbol at index 2 (>= sh_info of 2)
/usr/bin/ld: /home/jkmcameron/Workplace/git/Adventum/Adventum/libs/FMOD/libfmodL.so: .dynsym local symbol at index 3 (>= sh_info of 2)
/usr/bin/ld: /home/jkmcameron/Workplace/git/Adventum/Adventum/libs/FMOD/libfmodL.so: .dynsym local symbol at index 4 (>= sh_info of 2)
Finished building target: Adventum

查找并.dynsym local symbol at index ...没有给我任何线索,即使我将范围扩展到 FMOD 库之外并查找该错误,一般来说,我在 google 上并没有看到很多点击,好像该错误是为不便而量身定制的我。二进制文件应该不是问题,因为我已经尝试了 FMOD 网站上提供的多个版本,它们都抛出相同的错误,而且我没有看到其他人抱怨在 Linux 上链接期间二进制文件抛出错误。

Eclipse 可能参与了这个混乱,但我使用的是 GNU 工具链,即使我将 Eclipse 设置为“在第一次构建错误时停止”,它仍然可以成功编译这些错误,就好像它们是幻像错误一样。

该程序运行得很好,如果我足够懒惰,我什至可以忽略错误。大多数情况下,我正在寻找任何关于这些错误意味着什么的提示或线索,因为对我来说,C++ 编译和链接工具是幕后的人。

标签: c++linuxlinkereclipse-cdtfmod

解决方案


这只是一个警告,请参阅https://sourceware.org/bugzilla/show_bug.cgi?id=25135

看起来 FMOD 有一个无效的符号表,但阅读该错误报告似乎没有任何害处,只是有点神秘的警告(不包含关键字“警告”)。

黄金链接器似乎没有产生这个警告,你可以启用它-fuse-ld=gold


推荐阅读