我有一个自动生成大量代码的项目,我们在链接到最终可执行文件之前将其构建到静态库中。我们使用gcc /蚊蚋5.04a有这么多的文件,我们必须将作业分成批次,调用AR多次以构建库(为了避免命令行长度的限制),例如:提高归档性能
[echo] Archiving codegen
[echo] Deleting old codegen archive
[ar] Using ar found in /usr/bin
[ar] Batch 1 of 7 completed in 37.871 s
[ar] Batch 2 of 7 completed in 55.796 s
[ar] Batch 3 of 7 completed in 89.709 s
[ar] Batch 4 of 7 completed in 256.894 s
[ar] Batch 5 of 7 completed in 196.704 s
[ar] Batch 6 of 7 completed in 248.334 s
[ar] Batch 7 of 7 completed in 243.759 s
[ar] Archiving took: 1129.067 s
[ar] Using ranlib found in /usr/bin
[ar] Indexing took: 247.223 s
[echo] Done with codegen
我们正在寻找潜在的速度改进。看起来,随着存档的增长,每个批次需要的时间越来越长,大概是因为它在添加对象之前有更多的搜索(用于更新)。这似乎是删除归档文件比只更新旧归档文件更快的原因。在追求更高速度的过程中,我们在ar命令中使用了“qcS”标志。根据手册页,“q”(它应该是快速附加的)实际上是“r”(它是“使用替换”)的同义词,“c”创建存档(没有什么特别的)和“S”跳过生成一个索引(我们在末尾再次使用“ranlib”覆盖的索引
是否有任何方便的方式使用内置工具来使此操作更快?如果“快速附加”模式工作可能会是我们想要的,但唉