【发布时间】:2020-02-22 20:28:04
【问题描述】:
我已经编译了wget的源代码,这里是ftp服务器https://ftp.gnu.org/gnu/wget/,用于将我自己的程序链接到我编译项目后获得的目标文件之一。但是在所需文件上运行nm -u(具体来说是src/http.o)会给我很多需要在链接时解析的名称。
问题 #1
是否有工具可以查找需要存在哪些其他目标文件才能让链接器解析所有符号?手动测试每个可能的目标文件组合似乎都不合理。
问题 #2
当我尝试将我的程序与从编译项目获得的每个可能的目标文件链接时,我遇到以下错误 - multiple definition。这是否意味着通常我只需要在编译某个项目然后用它们构建我的可执行文件后选择我得到的目标文件的一个有意义的子集?
【问题讨论】:
-
如果代码的维护者打算让你在他们的代码中链接,那么他们会提供一个库来链接。如果这不是他们的意图,并且您仍然想使用他们代码的特定部分,那么不幸的是,您将需要花时间了解代码中的结构和依赖关系。可能有解决此类依赖关系的工具,但最好的方法可能是在您发现缺少符号时一次添加一个对象。
-
Q1 - 工具搜索与 stackoverflow 无关。 Q2 - 没有minimal reproducible example,很难说。你必须告诉我们你是如何“链接”你的程序的,具体是什么,以什么顺序以及如何。
标签: linux compilation wget ld elf