之间的区别是什么:
ar -x liba.a
ar -x libb.a
ar rcs libab.a *.o
和
ar rcs libab.a liba.a libb.a
他们真的在做同样的工作吗?
答案 0 :(得分:0)
除非你使用我不知道的ar
版本,否则这两个命令序列的效果会大不相同 - 尽管两者最终都会创建一个文件libab.a
。 / p>
第一个序列将liba.a
中的所有(对象)文件提取到当前目录中,然后libb.a
中的所有文件(任何名称冲突意味着来自libb.a
的文件将存活) ,然后目录中的所有目标文件(可能包括liba.a
和libb.a
中都没有的目标文件)归档在libab.a
中。
第二个序列创建一个存档,其中包含两个文件:liba.a
和libb.a
。这是合法且可行的,但生成的文件在链接程序时没有用。链接器不查看嵌套存档;它只会找不到提供任何符号的目标文件(因为liba.a
和libb.a
都不是目标文件),所以库实际上是不会被使用的 - 尽管你不会因为尝试而得到错误用它。
第一个命令序列比第二个命令序列更有用。