c++ - 未知的 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++ 编译和链接工具是幕后的人。
解决方案
这只是一个警告,请参阅https://sourceware.org/bugzilla/show_bug.cgi?id=25135
看起来 FMOD 有一个无效的符号表,但阅读该错误报告似乎没有任何害处,只是有点神秘的警告(不包含关键字“警告”)。
黄金链接器似乎没有产生这个警告,你可以启用它-fuse-ld=gold
推荐阅读
- python - 尝试使用 python pyspark.sql.types lib 读取使用数据类型创建的表时出现 Tableau to Athena 错误
- r - 按 R 组汇总数据
- java - Springboot:使用 REST 服务发布新对象时出现类型定义错误
- javascript - 尝试导入错误:“Outlet”未从“react-router-dom”导出
- javascript - 我们如何创建像“arguments”这样的类数组对象?
- python - 使用 Pandas 导入数据时遇到错误
- flutter - Flutter:使用多个图像资产后应用程序崩溃
- python - 调用时类内的函数不起作用(python)
- neo4j - 我如何找到 neo4j 密码?
- python - 使用 Selenium 和 python 在网页上查找文本,然后直接在其下方获取文本