+ -
当前位置:首页 → 问答吧 → 如何将一个软件包通过优化编译使编译的结果更小,比如firefox

如何将一个软件包通过优化编译使编译的结果更小,比如firefox

时间:2008-07-24

来源:互联网

如题,给点指导性建议就好

作者: yfwill   发布时间: 2008-07-24

CFLAGS 加入 -Os 會細一點,可是 Firefox 是怎樣也細不到哪裡去的!

作者: d00m3d   发布时间: 2008-07-24

编译优化,不一定会减小二进制软件包体积,提高的主要是程序的启动速度、执行效率。

LFS、GENTOO版有很多关于编译优化的帖子,LFS hint、GENTOO wiki也有不少介绍。
主要是设置CFLAGS、CXXFLAGS、LDFLAGS。

其实如果你不做大规模运算(科学计算)或运行在高负载状态(繁忙的服务器),只是日常应用──编辑、开发、编译、上网、下载、播放、办公、学习,以当前主流硬件、主流软件为参考,优化与否影响不大,主要是心理作用。

有一点必须清楚,编译优化一般是以牺牲程序通用性为代价的。
如果你希望系统可移植到多台机器,或你准备做一个能运行在尽可能多机器上的livecd,就必须在满足通用性的前提下优化。

个人推荐,系统应在满足较高通用性的前提下编译优化,比如针对x86的机器,可以i686-pc-linux-gnu为基准系统(i486、i586 MMX MII K6-2 PII这些机器已经很少遇到),完成基准系统后,可针对当前机器优化配置编译一份专用内核,然后有选择的最大化编译优化一些对执行效率有较高要求的程序如wine、kvm、mplayer、3D相关(Mesa、xorg-server、xorg-driver)。
按此标准FF不在最优化列表,FF的优化,可通过插件解决——adblock-plus、noscript、flashblock,禁掉广告、flash后FF就像飞一样。

如果经常编译软件,可以用ccache加速编译。

如果希望加电后尽快进入系统,可精简内核,或模块化内核并延迟加载内核模块,并且精简系统服务,或延迟启动服务。──从加电到登录界面,文本界面控制在10s内不是问题,图形界面控制在20s不是问题,再短与嵌入式系统就有得一拼啦。

如果想要一个体积尽可能小的系统,最小化依赖安装所有你想要的,然后strip。

作者: 聚焦深空   发布时间: 2008-07-25

谢谢二位,我的目标就是希望编译出来的软件包尽量小,去掉一些不常用的功能,尽量减少目标程序的体积,而不是加速。

作者: yfwill   发布时间: 2008-07-25

在 configure 时去掉一些不用的功能吧, 比如 editor 之类的, 这是最实在的减少体积的方法

作者: remote fish   发布时间: 2008-07-26

找些体積較少的瀏覽器不是更直接麼?

作者: d00m3d   发布时间: 2008-07-26

我就是需要remote fish这样的类似的指点。

作者: yfwill   发布时间: 2008-07-29

我建议,最实用的方法是:换用Konqueror。

Firefox搞小,我不知道你是什么目的,如果是应用于嵌入式的话,我测试过在300M的 MIPS CPU和在400M的ARM9上面的性能。基本上,如果你的系统只跑 firefox一样东西是勉强可以接受的,否则几乎没有实用价值,如果用户点开一个局域网网页要8秒,你是否还认为这是实用的?

苹果iPhone使用的Safari,用的就是KHTML,
Moto的Linux手机里面带的也是Konqueror。

带Firefox的智能终端当然有,不过他们的CPU和内存要强劲得多才行。

作者: poet   发布时间: 2008-08-02

我菜鸟,没法给出实质的建议,来学习的.

作者: tlze   发布时间: 2008-08-02

像 firefox 这类又大又烂的软件,根本就没办法通过优化编译来优化。
其实大一些没什么,只要稳定就好,不要老是内存泄漏就阿弥陀佛了。

作者: shpchp   发布时间: 2009-07-31

时隔一年,居然还有人回复这个老帖子,不过非常感谢!

作者: yfwill   发布时间: 2009-07-31

08-08-01, 21:21
09-07-30, 21:01

两个回帖之间经过了:362天23小时59分钟40秒

作者: simdiak   发布时间: 2009-07-31