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