使用Intel C++编译器在Windows平台上构建Firefox

xunxun 2012-06-05 07:58:03
自从Firefox10以来,我使用了Intel编译器构建了不同版本的Firefox。

目前来说,我认为构建过程、补丁、一些bug的解决方案已经非常稳定,同时我也重构了我的wiki页面。

Wiki 英文版 :

http://code.google.com/p/pcxfirefox/wiki/MozillaBuiltICC

Wiki 中文版 :

http://code.google.com/p/pcxfirefox/wiki/MozillaBuiltICC?wl=zh-Hans

希望该过程可以对其他人有所帮助。


如果你有其他问题,可以和我讨论。我不再构建Firefox的ICC版本除非有特别的需求,因为ICC的编译以及bug的定位/调试/解决都很费时间。对ICC构建有兴趣的可以按照wiki的步骤自行编译。
...全文
390 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
寂静的风之力 2012-06-17
  • 打赏
  • 举报
回复
唉,深有同感,ICC的BUG实在太多了,根本不可能用,简直比VC6还坑爹。
  • 打赏
  • 举报
回复

intel C++ 真不能用啊
赵4老师 2012-06-15
  • 打赏
  • 举报
回复
Intel不给你钱你就不免费给他们当测试人员!
pathuang68 2012-06-14
  • 打赏
  • 举报
回复
楼主真是个淫才!
xunxun 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

对,我这里如果用intel编译openssl的话,链接那一步得吃掉老子2G内存,什么跟什么啊,openssl编译出来的dll才多大,icc版本的也不过2MB多

这是哪个选项造成的,我根本没加-Qipo啊,openssl又不直接支持windows下icc的编译,我是拿MSVC的makefile改的,只把cl改成icl,link改成ilink,加了个参数/fast,/O2改/O3而已,其他都没……
[/Quote]

最后我研究了一下,icc的xilink默认使用ipo

所以我在链接开关里加入-qnoipo(也可能是/qnoipo),这样链接速度才令人满意
但也不是很令人满意如果你想要产生pdb的话

所以不产生pdb,就把/Zi和链接开关的/DEBUG什么的去掉吧,你会发现编译和链接速度提高数个数量级,当然就不好调试了。不过加入-qnoipo就可以大大加快链接速度了。
xunxun 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

对,我这里如果用intel编译openssl的话,链接那一步得吃掉老子2G内存,什么跟什么啊,openssl编译出来的dll才多大,icc版本的也不过2MB多

这是哪个选项造成的,我根本没加-Qipo啊,openssl又不直接支持windows下icc的编译,我是拿MSVC的makefile改的,只把cl改成icl,link改成ilink,加了个参数/fast,/O2改/O3而已,其他都没……
[/Quote]

最后我研究了一下,icc的xilink默认使用ipo

所以我在链接开关里加入-qnoipo(也可能是/qnoipo),这样链接速度才令人满意
但也不是很令人满意如果你想要产生pdb的话

所以不产生pdb,就把/Zi和链接开关的/DEBUG什么的去掉吧,你会发现编译和链接速度提高数个数量级,当然就不好调试了。不过加入-qnoipo就可以大大加快链接速度了。
jackyjkchen 2012-06-14
  • 打赏
  • 举报
回复
对,我这里如果用intel编译openssl的话,链接那一步得吃掉老子2G内存,什么跟什么啊,openssl编译出来的dll才多大,icc版本的也不过2MB多

这是哪个选项造成的,我根本没加-Qipo啊,openssl又不直接支持windows下icc的编译,我是拿MSVC的makefile改的,只把cl改成icl,link改成ilink,加了个参数/fast,/O2改/O3而已,其他都没动
xunxun 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

罪过罪过,那我岂不是干了坏事,不过说老实话,你那教程里大部分都在解决intel的bug,他们看到怕也是滋味怪怪的
[/Quote]

是滴

他们强烈想要我反馈ipo/pgo的bug

我给他们说没办法,因为你们的编译器一用ipo生成的pdb全都是坏的……
而且链接每次都要花费我10个小时,哥没工夫……
jackyjkchen 2012-06-14
  • 打赏
  • 举报
回复
罪过罪过,那我岂不是干了坏事,不过说老实话,你那教程里大部分都在解决intel的bug,他们看到怕也是滋味怪怪的

hemiya 2012-06-14
  • 打赏
  • 举报
回复
xunxun 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

所以说啊,icc这货也只能用于超算,先用先用小规模的输入验证一下,如果对了,那就没什么问题了,超算的程序也没什么其他的分支,不过就是这个循环这个线程这个进程增多放大而已,最后能够节省10%的计算时间就算是icc的成功了

我真没见过那个7x24的生产环境软件敢拿icc编译的,真是找死
[/Quote]

哈哈

我本来不想写这个教程,不过Intel方面强烈要求……

现在ICC用于日常软件真是惨不忍睹
jackyjkchen 2012-06-14
  • 打赏
  • 举报
回复
所以说啊,icc这货也只能用于超算,先用先用小规模的输入验证一下,如果对了,那就没什么问题了,超算的程序也没什么其他的分支,不过就是这个循环这个线程这个进程增多放大而已,最后能够节省10%的计算时间就算是icc的成功了

我真没见过那个7x24的生产环境软件敢拿icc编译的,真是找死
CandPointer 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

ICC真的是太激进了,最近哥写了个sse优化的加密算法,完全汇编写的,不可能被编译器优化了,结果发现icc编译的比vs2010编译的快2%左右

哪来的性能差距,一看反汇编,狗日的icc竟然连我写了百来行的内嵌汇编函数都敢内联,我连__inline都没加呢,要msvc下就算你用__forceinline他也不理你啊

那些bug,大概就是这种神一样的优化带来的吧
[/Quote]

-finline-functions
默认开启的
Interprocedural optimizations occur. However, if you specify -O0, the default is OFF.
xunxun 2012-06-14
  • 打赏
  • 举报
回复
你可以看他优化报告,一些莫名其妙的优化。

他遇到汇编,90%以上默认内联

只能强制no inline,烦死人,都不知道一些代码段哪来的

我有时直接把ip单文件优化给禁用
jackyjkchen 2012-06-14
  • 打赏
  • 举报
回复
ICC真的是太激进了,最近哥写了个sse优化的加密算法,完全汇编写的,不可能被编译器优化了,结果发现icc编译的比vs2010编译的快2%左右

哪来的性能差距,一看反汇编,狗日的icc竟然连我写了百来行的内嵌汇编函数都敢内联,我连__inline都没加呢,要msvc下就算你用__forceinline他也不理你啊

那些bug,大概就是这种神一样的优化带来的吧
xunxun 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

支持下,楼主如果写的再详细点,可以推荐
[/Quote]

我觉得已经不能再详细了,wiki的语法太繁琐。

推荐没有必要,因为我关键的问题没有写:如何调试确定ICC的bug

主要写出来也很少人看得懂,不具有普遍意义,大多说人只关心bug的最终解决吧,而不是解决过程
xunxun 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

bug王ICC 12.1编译的openssl,RSA算法直接不能用,坑爹

bug王ICC 12.1连个循环移位宏都能编译错误,还TMD有的对有的错,坑爹

openssl的AES汇编实现比C实现慢,坑爹

firefox现在做了版本帝,坑爹

抱怨完,走人
[/Quote]

老调试ICC的bug去了,就是坑爹,我向Intel不知道反馈了多少bug了……

Firefox版本可以看作4.13即可
jackyjkchen 2012-06-14
  • 打赏
  • 举报
回复
bug王ICC 12.1编译的openssl,RSA算法直接不能用,坑爹

bug王ICC 12.1连个循环移位宏都能编译错误,还TMD有的对有的错,坑爹

openssl的AES汇编实现比C实现慢,坑爹

firefox现在做了版本帝,坑爹

抱怨完,走人

昵称很不好取 2012-06-14
  • 打赏
  • 举报
回复
支持下,楼主如果写的再详细点,可以推荐
xunxun 2012-06-14
  • 打赏
  • 举报
回复
明天结贴
加载更多回复(2)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧