如果我有两个目标文件都定义了一个符号(函数)“foobar”。
是否可以告诉链接器遵守我在命令行调用中给出的 obj 文件顺序,并始终从第一个文件中获取符号而不是从后面的文件中获取符号?
据我所知,“弱”编译指示仅适用于共享库,不适用于目标文件。
请回答您知道的所有 C/C++ 编译器/链接器/操作系统组合,因为我很灵活并且使用了很多编译(sun studio、intel、msvc、gcc、acc)。
最佳答案
我相信您需要从第二个目标文件创建一个静态库,然后链接第一个目标文件和库。如果符号由目标文件解析,链接器将不会在库中搜索它。
或者将两个目标文件放在单独静态库中,然后链接顺序将由它们在命令行中的出现决定。
从目标文件创建静态库会因工具链而异。在 GCC 中使用 ar 实用程序,对于 MSVC lib.exe(或使用静态库项目向导)。
关于c - 使用公共(public)符号链接(symbolic link)两个目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1897113/