当与 -r 参数一起使用时,如果命令行中未指定输入文件,Binutils 的“ar”工具不会失败。
如果生成的文件名格式错误或由脚本或 makefile 计算错误,则可能会导致在常见用例中创建空输出文件,例如将输入对象文件和静态库的列表写入生成的文件。
ar -r output.a `cat myInputFile`
cat: myInputFile: No such file or directory
ar: creating output.a
因此,如果 cat 失败,其输出将变为空并生成空的 output.a。 我觉得很奇怪 ar 在这种情况下没有失败。我很好奇允许 ar 制作零大小静态库的原因是什么?
ar -V
GNU ar (GNU Binutils for Ubuntu) 2.24
对我有用:
$ ar unknown.a 2>/dev/null || echo 'ko'
ko
$ ar -V
GNU ar (GNU Binutils) 2.28.0.20170506
Copyright (C) 2017 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
您的
ar
版本可能太旧。