使用静态库来解析引用

时间:2014-07-21 17:16:21

标签: 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不能在命令行中显示?

1 个答案:

答案 0 :(得分:1)

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