Firefox 3
Plamo Linux 4.02 で Firefox 3 を使おうとしたら、
error while loading shared libraries: libjemalloc.so: cannot handle TLS data.
というエラーが出て動かない。http://mozilla.jp/firefox/system-requirements を見たら、最低限必要なライブラリに、GTK+ 2.10 以上、GLib 2.12 以上、Pango 1.14 以上、X.Org 1.0 以上と書いてある。GTK+ と GLib と Pango は前に自分でバージョンを上げたので入っているけど、X は XFree86 4.4.0 のままなのでそれが原因なのだろうか。(Google で検索してざっと見た感じでは違ってそうだけど。)(google:jemalloc TLS] [google:thread local storage Linux んー、kernel のバージョンを上げる必要があるのかな? システム要件にそういうことは書いておいて欲しいな。)
しょうがないので自分でコンパイルする。~/.mozconfig は以下のようにした。
# sh # Build configuration script # # See http://www.mozilla.org/build/unix.html for build instructions. # # Options for client.mk. mk_add_options MOZ_CO_PROJECT=browser mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@ mk_add_options MOZ_CO_LOCALES="ja" mk_add_options LOCALES_CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/l10n # Options for 'configure' (same as command-line options). ac_add_options --enable-application=browser ac_add_options --enable-ui-locale=ja ac_add_options --enable-svg ac_add_options --disable-tests ac_add_options --enable-optimize ac_add_options --disable-debug ac_add_options --enable-strip ac_add_options --disable-dbus ac_add_options --disable-jemalloc
"ac_add_options --disable-dbus" は、"configure: error: Library requirements (dbus-glib-1 >= 0.60) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." というエラーが出るので、"ac_add_options --disable-jemalloc" は
c++ -I/usr/X11R6/include -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-long-long -pedantic -fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -O2 -fPIC -shared -Wl,-z,defs -Wl,-h,libjemalloc.so -o libjemalloc.so jemalloc.o -lpthread -Wl,-rpath-link,../../dist/bin -ldl -lm jemalloc.o(.text+0x34e2): In function `choose_arena_hard': : undefined reference to `___tls_get_addr' jemalloc.o(.text+0x3541): In function `choose_arena_hard': : undefined reference to `___tls_get_addr' jemalloc.o(.text+0x3daa): In function `.L1433': : undefined reference to `___tls_get_addr' jemalloc.o(.text+0x40d7): In function `malloc': : undefined reference to `___tls_get_addr' jemalloc.o(.text+0x449e): In function `memalign': : undefined reference to `___tls_get_addr' jemalloc.o(.text+0x45c6): more undefined references to `___tls_get_addr' follow collect2: ld はステータス 1 で終了しました
というエラーが出るのでオプションにつけてみた。
コンパイル手順
tar jxvf firefox-3.0-source.tar.bz2 cd mozilla make -f client.mk checkout make -f client.mk build make -C obj-i686-pc-linux-gnu/browser/installer/ cp obj-i686-pc-linux-gnu/dist/firefox-3.0.ja.linux-i686.tar.gz ..