LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1385|回复: 11

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

[复制链接]
发表于 2008-7-24 16:44:05 | 显示全部楼层 |阅读模式
如题,给点指导性建议就好
发表于 2008-7-24 19:35:02 | 显示全部楼层
CFLAGS 加入 -Os 會細一點,可是 Firefox 是怎樣也細不到哪裡去的!
回复 支持 反对

使用道具 举报

发表于 2008-7-24 20:26:05 | 显示全部楼层
编译优化,不一定会减小二进制软件包体积,提高的主要是程序的启动速度、执行效率。

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-7-25 13:06:54 | 显示全部楼层
谢谢二位,我的目标就是希望编译出来的软件包尽量小,去掉一些不常用的功能,尽量减少目标程序的体积,而不是加速。
回复 支持 反对

使用道具 举报

发表于 2008-7-26 12:49:13 | 显示全部楼层
在 configure 时去掉一些不用的功能吧, 比如 editor 之类的, 这是最实在的减少体积的方法
回复 支持 反对

使用道具 举报

发表于 2008-7-26 12:51:46 | 显示全部楼层
找些体積較少的瀏覽器不是更直接麼?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-29 15:47:27 | 显示全部楼层
我就是需要remote fish这样的类似的指点。
回复 支持 反对

使用道具 举报

发表于 2008-8-1 20:41:55 | 显示全部楼层
我建议,最实用的方法是:换用Konqueror。

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

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

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

使用道具 举报

发表于 2008-8-1 21:21:24 | 显示全部楼层
我菜鸟,没法给出实质的建议,来学习的.
回复 支持 反对

使用道具 举报

发表于 2009-7-30 21:01:46 | 显示全部楼层
像 firefox 这类又大又烂的软件,根本就没办法通过优化编译来优化。
其实大一些没什么,只要稳定就好,不要老是内存泄漏就阿弥陀佛了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表