是否有任何选项将对象提取到不同的目录?有没有办法将它们提取到tmp下?
[test]# ls -l
total 1828
-rw-r--r-- 1 root root 1859628 Aug 24 02:10 libclsr11.a
drwxr-xr-x 2 root root 4096 Aug 24 02:12 tmp
[test]# ar x libclsr11.a
[test]# ls -l
total 3760
-rw-r--r-- 1 root root 157304 Aug 24 02:13 clsrcact.o
-rw-r--r-- 1 root root 19304 Aug 24 02:13 clsrcclu.o
-rw-r--r-- 1 root root 55696 Aug 24 02:13 clsrccss.o
..
drwxr-xr-x 2 root root 4096 Aug 24 02:12 tmp
[test]#
解决方案取决于ar
的版本。您可以使用ar --version
来显示系统中ar
的版本。
对于2.34版本之前的ar/GNU binutils:
不幸的是,版本2.34之前的ar没有提供一种方法来指定文件将被提取的目录。(至少我找不到。)它总是使用当前目录。但是,有一个简单的解决方法:在提取之前更改为目标目录,并使用到存档的相对路径:
# cd ./tmp/
# ar x ../libclsr11.a
这样你就会得到一个class。o, clsrcclu。0和成功。./tmp/目录下的0 .
对于ar/GNU binutils 2.34或更高版本:
binutils的2.34版为ar
程序引入了--output
。(请看更新日志。)它可以用来指定要提取内容的目录:
# ar x --output tmp libclsr11.a
这样,存档内容将降落在tmp
目录中,而不必使用早期ar
版本的解决方案。
实际上这是可能的,也许最近改变了,--output
选项是你需要的。
在你的例子中:
ar x libclsr11.a --output tmp