我正在学习链接和静态库。在一个练习中(来自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不能在命令行中显示?
答案 0 :(得分:1)
您无法将同一对象链接两次,否则您将获得重复的引用。依赖关系由链接器解决。如果找到引用,则链接器继续。这就是为什么你不需要指出p.o
两次。