c - 使用静态库解析引用

标签 c gcc static-libraries

我正在学习链接库和静态库。在一个练习中(来自 Computer Systems,Bryant - O'Hallaron),我被要求编写允许静态链接器解析所有符号引用的最小命令行。 考虑

p.o depends on libx.a
libx.a depends on liby.a
liby.a depends on libx.a
libx.a depends on p.o

我写道:

gcc p.o libx.a liby.a libx.a p.o

但正确答案是

gcc p.o libx.a liby.a libx.a

为什么额外的 p.o 不应该出现在命令行中?

最佳答案

您不能两次链接同一个对象,否则您会得到重复的引用。依赖关系由链接器解决。如果找到引用,链接器将继续。这就是为什么您不需要两次指示 p.o 的原因。

关于c - 使用静态库解析引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24870902/

相关文章:

c - 我什么时候释放变量decodeSet1?

c - 图片加载、C语言和GTK

c++ - 与 Boost 和 ncurses 的静态链接

在 C 中创建 "classes",在栈上还是在堆上?

c - 在结构中重新分配内存后出现奇怪的文本

c++ - ntoh功能在RHEL/GCC下是如何实现的?

c - 如何修复 C 程序中的编译错误 "WinMain"?

C++ 低延迟设计 : Function Dispatch v/s CRTP for Factory implementation

ios - iOS 中控制反转的框架和静态库有何不同?

c++ - 依赖于同一个静态链接库的可执行文件和共享库