我正在学习链接和静态库。在一个练习中(来自计算机系统,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/

10-11 20:14