这两个ar命令之间的区别是什么

时间:2017-05-19 09:33:09

标签: unix static-libraries ar

之间的区别是什么:

ar -x liba.a
ar -x libb.a
ar rcs libab.a *.o

ar rcs libab.a liba.a libb.a

他们真的在做同样的工作吗?

1 个答案:

答案 0 :(得分:0)

除非你使用我不知道的ar版本,否则这两个命令序列的效果会大不相同 - 尽管两者最终都会创建一个文件libab.a。 / p>

第一个序列将liba.a中的所有(对象)文件提取到当前目录中,然后libb.a中的所有文件(任何名称冲突意味着来自libb.a的文件将存活) ,然后目录中的所有目标文件(可能包括liba.alibb.a中都没有的目标文件)归档在libab.a中。

第二个序列创建一个存档,其中包含两个文件:liba.alibb.a。这是合法且可行的,但生成的文件在链接程序时没有用。链接器不查看嵌套存档;它只会找不到提供任何符号的目标文件(因为liba.alibb.a都不是目标文件),所以库实际上是不会被使用的 - 尽管你不会因为尝试而得到错误用它。

第一个命令序列比第二个命令序列更有用。