我将服务器升级到FreeBSD-10/gcc48 48,我的项目使用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旗:
“time ar -v -c -u -q .”:362.62真实用户0.82系统
“time ar v -c -r -u -s .”:407.94实0.13用户0.80系统
这必须比以前慢十倍(FreeBSD-8,股票GCC编译器)。我能做些什么来改善这一点呢?GNU Libtool只是在幕后使用ar (所以不会有帮助),对吗?我应该完全绕过静态库吗?(但构建.so不需要同样的时间吗?)不用说,这会扼杀我的开发周期时间。
发布于 2015-05-07 14:46:45
我无法解析ar,也没有看到其他任何东西,所以我构建了一个内存--足够大的磁盘来容纳我最大的ar输出文件,然后黑掉我的构建,在那里输出ar,然后将文件发送到原来的目的地。
这解决了性能问题,是一个相当独立的工作,但您可以想象其中的警告。(创建RAM-磁盘需要根访问,保存临时需要的资源,不能很好地扩展到多个任务,等等)。
发布于 2015-06-29 15:36:25
这个问题是由ar(1)的I/O访问模式与内核UFS死锁避免代码交互引起的,并且是在FreeBSD r284298中修复的。这将在2015年7月中旬的FreeBSD -当前快照构建中使用,并且应该为FreeBSD 10.2提供支持。
https://stackoverflow.com/questions/26340712
复制相似问题