Firefox für ein 64Bit-Linux und AMD64-Prozessor kompilieren

Wie viele andere User auch, nutze ich den Firefox als Browser. Früher habe ich swiftfox genutzt. Swiftfox ist eigentlich Firefox, dass aber mit speziellen Parametern kompiliert (in Maschinencode übersetzt) wurde, so dass es für eine bestimmte CPU-Architektur optimiert ist.
Swiftfox gibt es aber leider nicht als 64Bit-Variante, und ich wollte auch nicht so lange warten, bis die aktuelle Firefox-Version auch als swiftfox vorliegt. Daher habe ich angefangen meinen Firefox selbst zu kompilieren.
Man braucht dafür den Quellcode von Firefox, den C++ Compiler gcc aber der Version 3.3 und make.

Der Quellcode liegt gepackt vor, muss also erst mal entpackt werden.
Danach führe ich das configure-Script mit diversen Parametern aus:

./configure --prefix=/usr/ --enable-application=browser --enable-optimize --disable-debug --enable-libxul --disable-shared --disable-tests '--enable-optimize=-O3 -march=athlon64 -freorder-blocks -fno-reorder-functions -msse2 -mmmx -m3dnow -mfpmath=sse -D_FORTIFY_SOURCE=2' --with-pthreads --enable-application=browser --enable-default-toolkit=cairo-gtk2 --with-distribution-id=st-fox --disable-freetype2 --enable-single-profile --enable-extensions=default,xforms,schema-validation --disable-installer --disable-profilesharing --enable-xft --enable-crypto --enable-svg --enable-canvas --enable-update-packaging --enable-xinerama --with-java-include-path=/usr/lib/jvm/java-6-sun/

Sofern keine Fehler gemeldet wurden, kann ich das Programm nun kompilieren:

make && make install

Startet man nun Firefox, fällt direkt auf, dass das Firefox-Icon in der Titelleiste und in der Taskleiste anders aussieht.

icon

icon

Ein kurzer Blick unter Hilfe->Über verrät uns, dass man nicht Firefox, sondern Minefield gestartet hat. Das erklärt auch das Icon.

minefield

minefield

Minefiled ist Firefox, wird nur so genannt, weil man sich eigentlich in der Entwicklerversion befindet (Minenfeld). Das lässt sich sicher auch in Firefox und das richtige Icon ändern, aber mich stört es nicht.

Beim Kompilieren der Version 3.0.1 hatte ich dann plötzlich ein merkwürdiges Problem. Sowohl das configure-Script, wie auch das Kompilieren und Installieren verliefen ohne Probleme. Wollte ich dann Firefox starten, bekam ich folgende Meldung:

*** buffer overflow detected ***: /usr/lib/firefox-3.0.1/firefox-bin terminated
======= Backtrace: =========
/lib/libc.so.6(__fortify_fail+0x37)[0x7f71eb343787]
/lib/libc.so.6[0x7f71eb341e70]
/lib/libc.so.6[0x7f71eb3424cb]
/usr/lib/firefox-3.0.1/libxul.so(XRE_GetBinaryPath+0x4c)[0x7f71eec2ba5c]
/usr/lib/firefox-3.0.1/firefox-bin[0x400e2f]
/lib/libc.so.6(__libc_start_main+0xf4)[0x7f71eb2891c4]
/usr/lib/firefox-3.0.1/firefox-bin[0x400c69]

Im Netz direkt war so nichts Vernünftiges zu dem Thema zu finden, also stöberte ich etwas im Bugzilla rum. Anscheinend gibt es ein Problem bei einer bestimmten Konstellation. Wenn man ein 64Bit-Linux einsetzt und den gcc 4.3 Compiler nutzt, gibt es ein Problem mit einer Variable für einen Pfad, die im Quellcode festgelegt ist.
Im Bugzilla habe ich dann eine Lösung gefunden. Man muss einige Dateien des Quellcodes editieren, und dann das Programm noch mal kompilieren. Danach läuft es wie gewohnt.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s