我将两组非常相似的源代码集合到一个库归档中。可能有5个或6个函数在两个代码集中定义了相同的签名,但实现略有不同。我需要找到这些函数,以便我可以更改它们的名称(如果我需要它们两个),或者删除其中一个。
我认为ld
会为我做出艰苦的工作,通过报告函数是多重定义的,但它没有这样做。我目前有一个两阶段的链接程序:
1 - 两组源文件的增量链接,用于生成存档文件。如果我已经知道哪些函数是多重定义的,我可以使用nm
确认该符号在存档中出现两次。
2 - 此归档文件与调用库代码的对象的最终链接。 'ld'在此步骤中不会抱怨,并且可能只是链接它在归档中找到的第一个匹配对象,而不报告也可以使用第二个对象。
知道如何让ld
扫描整个存档,并报告多重定义的函数吗?感谢。
答案 0 :(得分:1)
尝试所有组件.o文件(而不是.a文件)的链接,您将获得多重定义的消息。