Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 什么';这两个ar命令的区别是什么_Unix_Static Libraries_Unix Ar - Fatal编程技术网

Unix 什么';这两个ar命令的区别是什么

Unix 什么';这两个ar命令的区别是什么,unix,static-libraries,unix-ar,Unix,Static Libraries,Unix Ar,这两者之间的区别是什么: ar -x liba.a ar -x libb.a ar rcs libab.a *.o 及 它们真的在执行相同的任务吗?除非您使用的是我不知道的ar版本,否则这两个命令序列的效果是完全不同的,尽管它们最终都创建了一个文件libab.a 第一个序列将liba.a中的所有(对象)文件提取到当前目录中,然后将libb.a中的所有文件提取到当前目录中(任何名称冲突都意味着libb.a中的文件将继续存在),然后将当前目录中的所有对象文件提取到当前目录中(可能包括既不在liba

这两者之间的区别是什么:

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


它们真的在执行相同的任务吗?

除非您使用的是我不知道的
ar
版本,否则这两个命令序列的效果是完全不同的,尽管它们最终都创建了一个文件
libab.a

第一个序列将
liba.a
中的所有(对象)文件提取到当前目录中,然后将
libb.a
中的所有文件提取到当前目录中(任何名称冲突都意味着
libb.a
中的文件将继续存在),然后将当前目录中的所有对象文件提取到当前目录中(可能包括既不在
liba.a
中也不在
libb.a
中的文件)存档在
libab.a

第二个序列创建了一个自身包含两个文件的归档文件:
liba.a
libb.a
。这是合法可行的,但生成的文件在链接程序时没有用处。链接器不会查看嵌套的归档文件;它只会发现没有提供任何符号的对象文件(因为
liba.a
libb.a
都不是对象文件),所以该库实际上是未使用的,尽管您在尝试使用它时不会出现错误


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

您是指两条“ar rcs”行之间的差异吗?如果是,您是指“.a”而不是“.o”?是,这两个命令的作用相同。否?使用-x提取和使用all.o创建静态库或直接使用.a创建库之间有什么区别?否,它们的作用不完全相同。请尝试“ar rcs libab1.a*.o”和“ar rcs libab2.a liba.a libb.a”,然后比较每个命令的内容(ar tv.a)。另请参见:
ar rcs libab.a liba.a libb.a