staging.inyokaproject.org

Firefox mit PGO kompilieren

Status: Ungelöst | Ubuntu-Version: Ubuntu 8.10 (Intrepid Ibex)
Antworten |

Metalwrath

Anmeldungsdatum:
19. September 2008

Beiträge: Zähle...

Hi!

Da Firefox unter Ubuntu bekanntlich sehr langsam, durch die fehlende Kompilierung mit PGO, wollte ich Firefox selber kompilieren aber diesmal mit PGO. Als Anleitung habe ich Neakros Blog genommen. Einzige Änderung ist bei mir die 6. Zeile

1
ac_add_options --enable-optimize=-O3

Beim Kompilieren mit dem Befehl

1
make -f client.mk profiledbuild

kommt bei mir der Fehler

1
 undefined reference to `__gcov_indirect_call_profiler'

Durch googlen hab ich herausgefunden, dass es wohl ein Bug von GCC ist. Trotzdem möchte ich ein selbst erstelltes Firefox mit PGO haben.

PS: Ich kenne Swiftweasel und habe es auch benutzt. Es hat leider einige Bugs, die mir nicht gefallen. PPS: Ich benutze natürlich das neue Firefox 3.0.7

Die letzten Meldungen:

   
../../../../../modules/libmar/src/libmar.a(mar_read.o): In function `mar_enum_items':
mar_read.c:(.text+0x45): undefined reference to `__gcov_indirect_call_profiler'
../../../../../modules/libmar/src/libmar.a(mar_read.o): In function `mar_read':
mar_read.c:(.text+0x14b): undefined reference to `__gcov_indirect_call_profiler'
../../../../../modules/libmar/src/libmar.a(mar_read.o): In function `mar_find_item':
mar_read.c:(.text+0x2b7): undefined reference to `__gcov_indirect_call_profiler'
../../../../../modules/libmar/src/libmar.a(mar_read.o): In function `mar_close':
mar_read.c:(.text+0x3a2): undefined reference to `__gcov_indirect_call_profiler'
../../../../../modules/libmar/src/libmar.a(mar_read.o): In function `mar_open':
mar_read.c:(.text+0x492): undefined reference to `__gcov_indirect_call_profiler'
../../../../../modules/libbz2/src/libbz2.a(bzlib.o):bzlib.c:(.text+0x48): more undefined references to `__gcov_indirect_call_profiler' follow
collect2: ld gab 1 als Ende-Status zurück

Catscrash

Anmeldungsdatum:
19. April 2007

Beiträge: Zähle...

holy shit dauert das lange... das dauert ja länger als kernel bauen! mhm, hab zwar nicht das selbe Problem aber vielleicht bin ich da einfach noch nicht angekommen...

make[4]: Betrete Verzeichnis '/home/catscrash/download/mozilla-pgo/mozilla/ff-opt'                                                                                                        
libs_tier_testharness                                                                                                                                                                     
make[4]: Verlasse Verzeichnis '/home/catscrash/download/mozilla-pgo/mozilla/ff-opt'                                                                                                       
make[3]: Verlasse Verzeichnis '/home/catscrash/download/mozilla-pgo/mozilla/ff-opt'                                                                                                       
make[2]: Verlasse Verzeichnis '/home/catscrash/download/mozilla-pgo/mozilla/ff-opt'                                                                                                       
make[1]: Verlasse Verzeichnis '/home/catscrash/download/mozilla-pgo/mozilla'                                                                                                              
OBJDIR=/home/catscrash/download/mozilla-pgo/mozilla/ff-opt /home/catscrash/download/mozilla-pgo/mozilla/run-firefox.sh                                                                    
*** buffer overflow detected ***: /home/catscrash/download/mozilla-pgo/mozilla/ff-opt/dist/bin/firefox-bin terminated                                                                     
======= Backtrace: =========                                                                                                                                                              
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)[0x42b1ada8]                                                                                                                             
/lib/tls/i686/cmov/libc.so.6[0x42b18eb0]                                                                                                                                                  
/lib/tls/i686/cmov/libc.so.6[0x42b19618]                                     

Metalwrath

(Themenstarter)

Anmeldungsdatum:
19. September 2008

Beiträge: 5

Hi!

Ich bin drauf gekommen, dass ich vor kurzem das CUDA SDK kompiliert habe und gcc auf eine ältere Version gestellt habe. Ich habe einfach g++ und gcc neuinstalliert und bekomme jetzt ähnliche Fehlermeldungen wie Catscrash. Hoffe jemand kann helfen.

pyro

Avatar von pyro

Anmeldungsdatum:
29. August 2007

Beiträge: 213

ich habs nach der anleitung und nen bisschen probieren geschafft 😉 allerdings mit der version 3.0.6 .

Anleitung zum nachmachen 😉

1. in $HOME ordner firefox anlegen. 2. sourcen in den ordner schieben und extrahieren mit tar xvjf sourcen.tar.bz2 3. aus den repos openjdk-6 und firefox-3.5-dev installieren ( weiß grad nicht ob das die richtigen namen sind. ) 4. die .mozconfig erstellen:

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) $(MOZ_OBJDIR)/_profile/pgo/profileserver.py'
ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --enable-optimize
ac_add_options --enable-update-packaging
ac_add_options --enable-application=browser
mk_add_options MOZ_CO_PROJECT=browser


ac_add_options --disable-crashreporter
ac_add_options --with-java-include-path=/usr/lib/jvm/java-6-openjdk/include
ac_add_options --with-java-bin-path=/usr/lib/jvm/java-6-openjdk/bin

statt wie in der anleitung unter Neakros Blog benutzen wir diese Zeile, auf die ich irgendwo im Netz gelandet bin, als ich nach firefox und profiledbuild gesucht habe. Die Zeile ist ein Link auf ein Script, das von den firefox Nightly-builds verwendet wird, so dass man den firefox nicht selber mit einem Script aufrufen muss, und wird mit den Firefox-sourcen mitgeliefert. "mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) $(MOZ_OBJDIR)/_profile/pgo/profileserver.py'"

die letzen 3 Zeilen schalten den crashreporter aus, für den eine curl.h gesucht aber nicht gefunden wird, und geben an wo, java-sdk liegt. Ich habe dafür openjdk-6 benutzt.

5. danach einfach wie unter neakros blog beschrieben kompilieren. Es wird weder fakeroot, noch root benötigt, da man die sourcen nach dem Kompilieren, mit einem Makefile zu einem Tarball kompiliert. also zuerst "make -f client.mk profiledbuild" und wenns durchgelaufen ist "make -C ff-opt/browser/installer" ausführen.

6. "cp ff-opt/dist/firefox-xxx.tar.bz2 ${HOME}/firefox" "cd ${HOME}/firefox" "tar xvjf firefox-xx.tar.bz2" und zum ausprobieren in den entpackten quellen die firefox binary ausführen

gruß pyro 😉

edit: übrigens: man kann einfach unter ./configure --help nachschauen, welche optionen einem für die .mozconfig zur verfügung stehen, dann ein "ac_add_options" davor, und damit wird die option in den configure-process von "make -f client.mk ..." aufgenommen

Catscrash

Anmeldungsdatum:
19. April 2007

Beiträge: 390

mh, wenn man es wie beschrieben macht kompiliert er ohne Fehler durch da hast du recht, aber nach dem kompilieren wird kein Firefox für die profiledbuild gestartet sondern direkt die binary kompiliert das kann doch auch nicht richtig sein oder? wie war das bei dir?

the-wiz

Avatar von the-wiz

Anmeldungsdatum:
1. Februar 2009

Beiträge: 89

Ich wollte es jetzt mit den Optionen installieren, doch folgender Fehler kommt:

checking for gtk+-2.0 >= 2.10.0 gtk+-unix-print-2.0 glib-2.0 gobject-2.0 gdk-x11-2.0... Package gtk+-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gtk+-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gtk+-2.0' found Package gtk+-unix-print-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gtk+-unix-print-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gtk+-unix-print-2.0' found Package glib-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `glib-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'glib-2.0' found Package gobject-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gobject-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gobject-2.0' found Package gdk-x11-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gdk-x11-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gdk-x11-2.0' found
configure: error: Library requirements (gtk+-2.0 >= 2.10.0 gtk+-unix-print-2.0 glib-2.0 gobject-2.0 gdk-x11-2.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.

Wie stelle ich das jetzt in der .mozconfig ein?

Antworten |