Linker GNU ld:如何检测多重定义的符号?

Linker GNU ld:如何检测多重定义的符号?,linker,gnu,ld,Linker,Gnu,Ld,我将两组非常相似的源代码聚合到一个库归档中。可能有5或6个函数在两个代码集中使用相同的签名定义,但实现略有不同。我需要找到这些函数,这样我就可以更改它们的名称(如果我需要两个),或者删除其中一个 我原以为ld可以帮我完成这项艰巨的工作,因为它报告说函数是多重定义的,但它没有这样做。我目前有一个两阶段链接程序: 1-两组源文件的增量链接,用于生成存档文件。如果我已经知道哪些函数是乘法定义的,我可以使用nm确认符号在存档中出现两次 2-此存档文件与调用库代码的对象的最终链接。”ld'在这一步中没有抱

我将两组非常相似的源代码聚合到一个库归档中。可能有5或6个函数在两个代码集中使用相同的签名定义,但实现略有不同。我需要找到这些函数,这样我就可以更改它们的名称(如果我需要两个),或者删除其中一个

我原以为
ld
可以帮我完成这项艰巨的工作,因为它报告说函数是多重定义的,但它没有这样做。我目前有一个两阶段链接程序:

1-两组源文件的增量链接,用于生成存档文件。如果我已经知道哪些函数是乘法定义的,我可以使用
nm
确认符号在存档中出现两次

2-此存档文件与调用库代码的对象的最终链接。”ld'在这一步中没有抱怨,大概只是链接它在存档中找到的第一个匹配对象,而没有报告第二个对象也可以使用


你知道如何让
ld
扫描整个归档文件,并报告多重定义的函数吗?谢谢。

尝试链接所有组件.o文件(而不是.a文件),您将获得多重定义的消息。

尝试链接所有组件.o文件(而不是.a文件),您将获得多重定义的消息