我将两组非常相似的源代码聚合到一个库归档中。在两个代码集中可能有5到6个函数定义了相同的签名,但实现略有不同。我需要找到这些函数,这样我就可以更改它们的名称(如果我需要这两个函数),或者删除其中一个。
我以为ld会帮我完成这项艰巨的工作,因为它报告说函数是多重定义的,但它并没有做到这一点。我现在有一个两阶段的链接程序:
1-两组源文件的增量链接,以生成归档文件。如果我已经知道哪些函数是多重定义的,我可以使用nm来确认该符号在归档文件中出现了两次。
2-此存档文件与调用库代码的对象的最终链接。‘'ld’在这一步中没有抱怨,大概只是链接了它在归档中找到的第一个匹配的对象,而没有报告第二个对象也可能被使用。
你知道如何让ld扫描整个归档,并报告多个定义的函数吗?谢谢。
发布于 2012-01-30 20:31:01
尝试链接所有组件.o文件(而不是.a文件),您将得到多个定义的消息。
https://stackoverflow.com/questions/9061873
复制相似问题