Chinaunix首页 | 论坛 | 博客
  • 博客访问: 115532
  • 博文数量: 32
  • 博客积分: 2067
  • 博客等级: 大尉
  • 技术积分: 383
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-08 07:47
文章分类

全部博文(32)

文章存档

2011年(1)

2010年(14)

2009年(17)

我的朋友

分类: LINUX

2010-02-06 16:58:56

并非是我不喜欢iceweasel
实际上每个debian用户都可以感觉到iceweasel比firefox小巧快速,喜欢它的蓝色的冰鼬,那些arm,mips用户更是深刻的感受到它介绍里面讲的"lightweight and cross-platform"
但是,如果是和自己编译的更加快速的firefox相比,我还是选择了后者
今天卸掉xulrunner和iceweasel,自己编译了xulrunner-1.9.2和firefox-3.6

2010年3月17日,xulrunner-1.9.3a2和firefox-3.7a2同样方法成功

参考blfs和cblfs手册





重要工具版本
gcc 4.4.3
perl 5.10
make 3.81
GTK+ 2.18.6
xorg 7.5

很多人都说xulrunner是不必要的,但我还是将它编译了一下,虽然编译xulrunner时间比较长

##安装几个dev文件,可能不太全,编译时缺什么装什么
sudo aptitude build-dep iceweasel
sudo apt-get install libdbus-glib-1-dev libnotify-dev libasound2-dev libsqlite3-dev libidl-dev libiw-dev xorg-dev

wget
tar xvf firefox-3.6.source.tar.bz2

加上几个优化参数:
export CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer" &&
CXXFLAGS=$CFLAGS
试了几次O3,效果没有O2好,所以都用gcc官方推荐的O2吧
-march=native或者指定architecture,需要根据自己的机器,我的是core2,参考




进一步优化参考
https://developer.mozilla.org/en/Building_with_Profile-Guided_Optimization
有个swiftweasel是PGO优化的,懒得编译就直接下载来用吧
我自己编译的3.6在这个链接上跑分比swiftweasel好点,但启动速度慢2-3秒,第二次启动慢1秒左右

peacekeeper得分我自己编译的ff-3.6得分为sw3.5.6的1.20倍,而官方编译的为3.6为3.5.6的1.5倍
由于版本不同所以不能作数,只好说,自己编译的版本比较灵活,可以跟着mozilla的发布周期走,别人特别制作的确实有过人之处.要是能把swiftweasel的全部制作过程统统拿来看看就好了

xulrunner:
进入firefox-source解压出来的目录,先写.mozconfig:

. $topsrcdir/xulrunner/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
ac_add_options --prefix=/opt/xulrunner-1.9.2
ac_cv_visibility_pragma=no
ac_add_options --with-nspr-prefix=/usr
ac_add_options --with-nss-prefix=/usr
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-bz2
ac_add_options --with-system-jpeg

ac_add_options --with-system-zlib
ac_add_options --disable-debug
ac_add_options --disable-installer
ac_add_options --disable-xprint
ac_add_options --disable-tests
ac_add_options --enable-canvas
ac_add_options --enable-default-toolkit=cairo-gtk2
ac_add_options --enable-safe-browsing
ac_add_options --enable-svg
ac_add_options --enable-system-cairo
ac_add_options --enable-system-sqlite
ac_add_options --enable-pango
ac_add_options --disable-javaxpcom

其中我没有用"ac_add_options --with-system-png"选项,debian的libpng没有apng支持,会出错,否则要自己编译打过补丁的libpng:


如果用gcc-4.x需要:

sed -i '1i\#include ' toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc &&
sed -i '1i\#include ' toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc &&
sed -i '1i\#include ' toolkit/crashreporter/google-breakpad/src/client/linux/handler/minidump_generator.cc

make -f client.mk build
sudo make -f client.mk install

##以下两句最好放进bashrc或profile文件
export PATH="${PATH}:/opt/xulrunner-1.9.2/bin"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}${PKG_CONFIG_PATH+:}/opt/xulrunner-1.9.2/lib/pkgconfig"

firefox
同样的先写.mozconfig

. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
ac_add_options --prefix=/opt/firefox-3.6
ac_cv_visibility_pragma=no
ac_add_options --with-nspr-prefix=/usr
ac_add_options --with-nss-prefix=/usr
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-bz2
ac_add_options --with-system-jpeg
ac_add_options --with-system-zlib
ac_add_options --disable-debug
ac_add_options --disable-installer
ac_add_options --disable-xprint
ac_add_options --disable-tests
ac_add_options --disable-crashreporter
ac_add_options --disable-mochitest
ac_add_options --disable-updater
ac_add_options --enable-optimize
ac_add_options --enable-canvas
ac_add_options --enable-default-toolkit=cairo-gtk2
ac_add_options --enable-safe-browsing
ac_add_options --enable-svg
ac_add_options --enable-system-cairo
ac_add_options --enable-system-sqlite
ac_add_options --enable-strip
ac_add_options --enable-official-branding
export BUILD_OFFICIAL=1
export MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1
ac_add_options --with-system-libxul --with-libxul-sdk=/opt/xulrunner-1.9.2/lib/xulrunner-devel-1.9.2
ac_add_options --enable-pango
ac_add_options --disable-javaxpcom

同样的进行编译安装
make -f client.mk build
sudo make -f client.mk install

firefox的编译比xulrunner快多了
最后在/opt下看到了/opt/firefox-3.6/bin/firefox,它是个软连接,指向/opt/firefox-3.6/lib/firefox-3.6/firefox
所以只要自建一个软连接即可
sudo ln -sv /opt/firefox-3.6/lib/firefox-3.6/firefox /usr/local/bin/
firefox就在PATH中了


下面开始猥琐时间:
如何把firefox的图标改为iceweasel的呢?
新编译的firefox图标在:
/opt/firefox-3.6/lib/firefox-3.6/chrome/icons/default
/opt/firefox-3.6/lib/firefox-3.6/icons

所以只要去下载一个iceweasel的deb包,解压开来复制对应的图标就行了


可以明显感觉到,启动firefox速度快了很多,通过htop查看它的内存和cpu时间占有率也明显降低,打开用样的十几个网页,内存节约了60-80兆

打开一些多媒体的网页测试一下插件和扩展是否正常工作,我常用的Easy DragToGo暂时没有firefox-3.6版,希望它尽快跟进...

关于mplayer的插件
可以使用gecko-mplayer,不过源里的gecko-mplayer依赖iceweasel
可以先只安装gnome-mplayer,然后去下载最新的gecko-mplayer,gecko-mplayer会自动调用gnome-mplayer

解压
./configure
make
既然要绕开包管理器,那么干脆不安装,直接cp src/*.so /home/stesen/.mozilla/plugins/即可
过上一年半载,也许这个版本的gecko-mplayer太老了,就再编译新版本就行了


PGO优化版
pgo优化版的编译,下面是arch的firefox-pgo维护者提供的参考

照着修改下.mozconfig,打上提供的几个patch,过程和上面差不多
patch -Np0 -i "$srcdir"/fix-mozilla-launcher.patch
patch -Np1 -i "$srcdir"/mozilla-firefox-1.0-lang.patch
patch -Np1 -i "$srcdir"/ldflags-namespec.patch
patch -Np0 -i "$srcdir"/jemalloc-enable-pgo.patch
make -f client.mk build
make -f client.mk profiledbuild
make -C ff-pgo install
使用的感觉:差不多,没有太大变化,js跑分也不见涨

不用xulrunner
:
不用xulrunner也是可以的,这样的话,firefox就成为独立的浏览器了,关键是要一个patch:
这个是BLFS提供的patch,用编辑器打开,把1.9.1全改为1.9.2就行了,vi里面:%s/1.9.1/1.9.2/g
然后patch -Np1 -i XXXX.patch


mozconfig里面把ac_add_options --with-system-libxul --with-libxul-sdk=/opt/xulrunner-1.9.2/lib/xulrunner-devel-1.9.2这行注释掉
编译过程稍微长一点
阅读(1712) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~