c - 使用公共(public)符号链接(symbolic link)两个目标文件

标签 c linker

如果我有两个目标文件都定义了一个符号(函数)“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/

相关文章:

c - 如何解释下面的C代码片段?

c - 堆C数据存储

c++ - gcc 链接器库搜索顺序;路径加上静态与共享

c - 带有条件运算符的语句的工作原理是什么?

c - 具有多个线程的 rand()

c - K&R 练习 3-4 : Negative Numbers Represented In Binary

c++ - 将 C++ exe 与 C 库 (GNU) 链接时出现问题

c++ - 为什么在使用模板时出现 "unresolved external symbol"错误?

c - "Undefined reference"共享库和 ldflags 错误

c - 链接到外部 C 库的 R 包