0

我将服务器升级到 FreeBSD-10/ gcc48,我的项目使用 ar 将子项目放入静态库,现在链接速度非常慢。

10.0-RELEASE-p4 FreeBSD 10.0-RELEASE-p4 #0: Tue Jun  3 13:14:57 UTC 2014     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

使用不同的 ar 标志:

“时间 ar -v -c -u -q ...”:362.62 真实 0.11 用户 0.82 系统

“时间 ar v -c -r -u -s ...”:407.94 真实 0.13 用户 0.80 系统

这必须比以前慢十倍(FreeBSD-8,股票 GCC 编译器)。我能做些什么来改善这一点?GNU Libtool 只是在幕后使用 ar(所以没有帮助),对吧?我应该完全绕过静态库吗?(但是构建 .so 不会花费相同的时间吗?)不用说,这会缩短我的开发周期时间。

4

2 回答 2

2

这个问题是由 ar(1) 的 I/O 访问模式与内核 UFS 死锁避免代码交互引起的,并在 FreeBSD r284298中得到修复。这将在 2015 年 7 月中旬的 FreeBSD-CURRENT 快照版本中提供,并且应该向后移植到 FreeBSD 10.2。

于 2015-06-29T15:36:25.577 回答
0

无法解决ar并且看不到其他任何东西,我构建了一个足够大的 RAM 磁盘以容纳我最大的ar输出文件,然后破解我的构建以ar在那里输出,然后mv将文件发送到原始目的地。

这解决了性能问题,并且是一个非常独立的解决方法,但您可以想象这些警告。(创建 RAM 磁盘需要 root 访问权限,保存您只需要暂时需要的资源,不能很好地扩展多个任务等)。

于 2015-05-07T14:46:45.277 回答