我正在构建V8,默认情况下,它构建为"精简"归档,其中.a
文件基本上只包含指向文件系统上对象文件的指针,而不是包含对象文件本身。详见手册。
我希望能够把这个库放在一个中心位置,这样其他人就可以链接到它,而且提供一个普通的存档文件显然会容易得多,而不是提供一堆对象文件。
如何将构建生成的精简档案转换为正常档案?我认为它很简单,只需枚举精简归档中的对象文件并使用这些文件重建归档,但我不知道可以使用什么命令来列出归档的对象文件。
经过一些额外的研究,ar -t
可以用于枚举归档中的对象文件,因此之后只需像创建归档时一样将该列表提供给ar
即可。
以下脚本一次为所有库处理了这个问题:
for lib in `find -name '*.a'`;
do ar -t $lib | xargs ar rvs $lib.new && mv -v $lib.new $lib;
done