linux下编译Firefox 3.0浏览器全过程
其他linux发行版编译Firefox 3.0浏览器可以参考本文
环境:
OS: Fedora7 (kernel 2.6.21)
Firefox: v3.0 / Minefield (firefox-3.0-source.tar.bz2)
检查一些必需的工具和代码:
(1) Shell: bash
(2) GCC: v4.1.2
(3) Perl: v5.8.8
(4) GNU make: v3.81
(5) CVS: v1.11.22
(6) GTK+: v2.10.11 (通过执行/usr/bin/gtk-query-immodules-2.0-32可以确认版本)
(7)
libXt-devel for X11/Intrinsic.h, X11/Shell.h
(幸好我用的环境里这两个文件/usr/include/X11/Intrinsic.h和/usr/include/X11/Shell.h都存在)
(8) libIDL: v0.8.8 (通过执行/usr/bin/libIDL-config-2 –version可以确认版本)
(9) zip: v2.31
(10) freetype: 2.3.4 (通过执行/usr/bin/freetype-config –ftversion可以确认版本)
(11) fontconfig: 存在这个库(/usr/lib/libfontconfig.so.1.2.0)
(12) pkg-config: v0.20
(13) dbus-1-glib-devel: 存在库/usr/lib/libdbus-glib-1.so.2.1.0
建立mozconfig文件:
路径:/home/tielei/opensrc/mozconfig
文件内容如下:
###### mozconfig file start #########
. $topsrcdir/browser/config/mozconfig
mk_add_options
MOZ_OBJDIR=@TOPSRCDIR@/../obj-@CONFIG_GUESS@
ac_add_options
–prefix=/home/tielei/opensrc/firefox-installed
ac_add_options –enable-debug
ac_add_options –disable-optimize
###### mozconfig file end #########
(上面的配置打开了debug信息,并关闭了优化,便于调试)
编译:
先安装新版本的glib,否则编译时会出现如下错误:
/usr/local/lib/libpangoft2-1.0.so.0: undefined reference
to
`g_once_init_enter_impl’
/usr/local/lib/libpangoft2-1.0.so.0: undefined
reference to
`g_once_init_leave’
(1) 将glib-2.16.0.tar.bz2拷贝到/home/tielei/opensrc/
(2) tar xjf glib-2.16.0.tar.bz2
(3) mkdir glib-2.16.0-installed
(4) cd glib-2.16.0
(5) ./configure –prefix=/home/tielei/opensrc/glib-2.16.0-installed
(6) make
(7) make install
下一步就可以编译firefox
(8) 将firefox-3.0-source.tar.bz2拷贝到/home/tielei/opensrc/
(9) tar xjf firefox-3.0-source.tar.bz2
(10) mkdir firefox-installed
(11) 确保.mozconfig文件是unix格式,执行
dos2unix ~/.mozconfig
如果.mozconfig文件里存在dos格式的换行符,则会出现类似“: No such file or directoryne … ”的错误
(12) export MOZCONFIG=/home/tielei/opensrc/mozconfig
(13) export
PKG_CONFIG_PATH=/home/tielei/opensrc/glib-2.16.0-installed/lib/pkgconfig:/usr/lib/pkgconfig
(14) cd mozilla
(15) make -f client.mk build
编译成功后,会在mozilla生成一个objdir,根据mozconfig文件的配置,这个objdir是/home/tielei/opensrc/obj-i686-pc-linux-gnu/。
如果需要改变mozconfig配置,重新编译之前最好到obj-i686-pc-linux-gnu目录下先执行make
clean,否则可能会出现一些意想不到的问题。
运行刚编译好的firefox浏览器
(16) export
LD_LIBRARY_PATH=/home/tielei/opensrc/glib-2.16.0-installed/lib
设置新安装的glib库路径
(17) cd /home/tielei/opensrc/obj-i686-pc-linux-gnu/dist/bin/
(18)
./firefox &
更为详细的编译说明见:
http://developer.mozilla.org/en/docs/Build_Documentation