ich hab sehr gute erfahrungen damit. hat absolut keinen negativen nebeneffekt (die binaries werden nicht grösser, usw.) , ist 100% safe, wird von ulrich drepper persönlich empfohlen, und optimiert wirklich merklich! wer's nicht glaubt, kann einige time experimente machen.man ld
-O level
If level is a numeric values greater than zero ld optimizes the output. This might take significantly longer and therefore probably should only be enabled for the final binary.
TARGET_LDFLAGS
-
- Interessierter
- Beiträge: 69
- Registriert: Donnerstag 17. Oktober 2002, 13:42
TARGET_LDFLAGS
kann jemand mit cvs access in configure.ac TARGET_LDFLAGS="-Wl,-O1" hinzufügen?
-
- Developer
- Beiträge: 245
- Registriert: Mittwoch 13. März 2002, 21:19
Hi,
ich hab mir mal nen neues CDK damit aufgesetzt... das Image läuft auch auf der DM7000 damit.. aber der erhoffte mega performance Schub ist dadurch nicht zu spüren..
Mal schauen.. ich würde das gerne erstmal ne weile verwenden.. und mal schauen, dass es dadurch nicht irgendwie Probleme mit Programmen gibt die nicht mit diesem -Wl,-O1 kompiliert wurden...
cu
ich hab mir mal nen neues CDK damit aufgesetzt... das Image läuft auch auf der DM7000 damit.. aber der erhoffte mega performance Schub ist dadurch nicht zu spüren..
Mal schauen.. ich würde das gerne erstmal ne weile verwenden.. und mal schauen, dass es dadurch nicht irgendwie Probleme mit Programmen gibt die nicht mit diesem -Wl,-O1 kompiliert wurden...
cu
-
- Interessierter
- Beiträge: 69
- Registriert: Donnerstag 17. Oktober 2002, 13:42
ok. will dich nicht abfucken, aber schau dir ma das an:
es gibt noch ne ld option namens --as-needed. ist ne option um depencies von libraries zu verringern.
hier ein beispiel:
ansonsten kannst du gerne nur bei -Wl,-O1 bleiben. ist absolut harmlos. aber -Wl,--as-needed muss auch harmlos sein, denn bei KDE ist es seit 3.4 ein default flag.
es gibt noch ne ld option namens --as-needed. ist ne option um depencies von libraries zu verringern.
hier ein beispiel:
powerpc-tuxbox-linux-gnu-g++ -Wall -mcpu=405 -msoft-float -mmultiple -mstring -meabi -pipe -Os -DHAVE_DREAMBOX_HARDWARE -pthread -o enigma -Wl,--export-dynamic enigma.o enigma_dyn.o enigma_event.o enigma_lcd.o parentallock.o enigma_main.o enigma_plugins.o enigma_setup.o enigma_xmlrpc.o scan.o setupnetwork.o setupvideo.o sselect.o streaminfo.o enigma_dyn_rotor.o enigma_mainmenu.o satconfig.o epgwindow.o setup_timezone.o enigma_info.o enigma_scan.o setupskin.o setup_osd.o timer.o setup_lcd.o enigma_vcr.o channelinfo.o setup_harddisk.o enigma_ci.o upgrade.o satfind.o setup_rc.o setup_extra.o rotorconfig.o setup_rfmod.o wizard_language.o wizard_scan.o engrab.o setupengrab.o helpwindow.o tpeditwindow.o enigma_web.o enigma_epg.o wizard_timezone.o elirc.o hotplug.o enigma_bouquet.o setup_window.o system_settings.o time_settings.o software_update.o enigma_standby.o enigma_mmisocket.o enigma_mmi.o flashtool.o time_correction.o enigma_dyn_epg.o setup_keyboard.o wizard_fpupdate.o enigma_mount.o enigma_dyn_mount.o enigma_dyn_utils.o enigma_dyn_wap.o enigma_dyn_conf.o enigma_dyn_flash.o enigma_dyn_xml.o enigma_streamer.o enigma_dyn_timer.o enigma_processutils.o enigma_picmanager.o enigma_dyn_misc.o enigma_dyn_pda.o enigma_dyn_movieplayer.o enigma_dyn_dreamflash.o rds_text.o -Wl,--whole-archive ../lib/driver/libenigma_driver.a ../lib/base/libenigma_base.a ../lib/codecs/libenigma_codecs.a ../lib/dvb/libenigma_dvb.a ../lib/dvb/lowlevel/libenigma_dvb_lowlevel.a ../lib/gui/libenigma_gui.a ../lib/gdi/libenigma_gdi.a ../lib/socket/libenigma_socket.a ../lib/system/libenigma_system.a ../lib/picviewer/libenigma_picviewer.a ../lib/movieplayer/libenigma_movieplayer.a -Wl,--no-whole-archive -L/home/lior/dreambox/root/cdkroot/lib -lfreetype -L/home/lior/dreambox/root/cdkroot/lib -lid3tag -lz -L/home/lior/dreambox/root/cdkroot/lib -lmad -lm -L/home/lior/dreambox/root/cdkroot/lib -lmd5sum -L/home/lior/dreambox/root/cdkroot/lib -lpng12 -lz -lm -L/home/lior/dreambox/root/cdkroot/lib -lsigc-1.2 -L/home/lior/dreambox/root/cdkroot/lib -lxmltree -L/home/lior/dreambox/root/cdkroot/lib -ltuxtxt -ldl -lpthread -lcrypt -lresolv -ljpeg -lungif
lior@BeerSheva ~/dreambox/apps/tuxbox/enigma/src $ powerpc-tuxbox-linux-gnu-readelf -d ./enigma | grep NEEDED | wc -l
19
powerpc-tuxbox-linux-gnu-g++ -Wl,-O1 -Wl,--as-needed -Wall -mcpu=405 -msoft-float -mmultiple -mstring -meabi -pipe -Os -DHAVE_DREAMBOX_HARDWARE -pthread -o enigma -Wl,--export-dynamic enigma.o enigma_dyn.o enigma_event.o enigma_lcd.o parentallock.o enigma_main.o enigma_plugins.o enigma_setup.o enigma_xmlrpc.o scan.o setupnetwork.o setupvideo.o sselect.o streaminfo.o enigma_dyn_rotor.o enigma_mainmenu.o satconfig.o epgwindow.o setup_timezone.o enigma_info.o enigma_scan.o setupskin.o setup_osd.o timer.o setup_lcd.o enigma_vcr.o channelinfo.o setup_harddisk.o enigma_ci.o upgrade.o satfind.o setup_rc.o setup_extra.o rotorconfig.o setup_rfmod.o wizard_language.o wizard_scan.o engrab.o setupengrab.o helpwindow.o tpeditwindow.o enigma_web.o enigma_epg.o wizard_timezone.o elirc.o hotplug.o enigma_bouquet.o setup_window.o system_settings.o time_settings.o software_update.o enigma_standby.o enigma_mmisocket.o enigma_mmi.o flashtool.o time_correction.o enigma_dyn_epg.o setup_keyboard.o wizard_fpupdate.o enigma_mount.o enigma_dyn_mount.o enigma_dyn_utils.o enigma_dyn_wap.o enigma_dyn_conf.o enigma_dyn_flash.o enigma_dyn_xml.o enigma_streamer.o enigma_dyn_timer.o enigma_processutils.o enigma_picmanager.o enigma_dyn_misc.o enigma_dyn_pda.o enigma_dyn_movieplayer.o enigma_dyn_dreamflash.o rds_text.o -Wl,--whole-archive ../lib/driver/libenigma_driver.a ../lib/base/libenigma_base.a ../lib/codecs/libenigma_codecs.a ../lib/dvb/libenigma_dvb.a ../lib/dvb/lowlevel/libenigma_dvb_lowlevel.a ../lib/gui/libenigma_gui.a ../lib/gdi/libenigma_gdi.a ../lib/socket/libenigma_socket.a ../lib/system/libenigma_system.a ../lib/picviewer/libenigma_picviewer.a ../lib/movieplayer/libenigma_movieplayer.a -Wl,--no-whole-archive -L/home/lior/dreambox/root/cdkroot/lib -lfreetype -L/home/lior/dreambox/root/cdkroot/lib -lid3tag -lz -L/home/lior/dreambox/root/cdkroot/lib -lmad -lm -L/home/lior/dreambox/root/cdkroot/lib -lmd5sum -L/home/lior/dreambox/root/cdkroot/lib -lpng12 -lz -lm -L/home/lior/dreambox/root/cdkroot/lib -lsigc-1.2 -L/home/lior/dreambox/root/cdkroot/lib -lxmltree -L/home/lior/dreambox/root/cdkroot/lib -ltuxtxt -ldl -lpthread -lcrypt -lresolv -ljpeg -lungif
bei manchen binaries ist es sogar von 63 auf 5 reduziert! natürlich ist ne applikation schneller und bedarft weniger speicher, die beim ausführen nur 5 anstatt 63 libraries zu öffnen versucht!lior@BeerSheva ~/dreambox/apps/tuxbox/enigma/src $ powerpc-tuxbox-linux-gnu-readelf -d ./enigma | grep NEEDED | wc -l
17
ansonsten kannst du gerne nur bei -Wl,-O1 bleiben. ist absolut harmlos. aber -Wl,--as-needed muss auch harmlos sein, denn bei KDE ist es seit 3.4 ein default flag.
-
- Developer
- Beiträge: 1475
- Registriert: Dienstag 4. Februar 2003, 22:02
Das "-Wl,-O1" scheint keine negative Nebenwirkungen zu haben, und ich habe es in newmake übernommen.
Dagegen führt --as-needed zu fehlerhaftive Ergebnisse: Falls ein shared library Symbole von einem anderen shared Library benötigt, werden diese "sekundäre Abhängigheiten" durch --as-needed verworfen. Tuxbox baut nicht mit --as-needed. Letztendlich ist es die Aufgabe des Makefileauthors die notwendige Libraries aufzulisten.
Dagegen führt --as-needed zu fehlerhaftive Ergebnisse: Falls ein shared library Symbole von einem anderen shared Library benötigt, werden diese "sekundäre Abhängigheiten" durch --as-needed verworfen. Tuxbox baut nicht mit --as-needed. Letztendlich ist es die Aufgabe des Makefileauthors die notwendige Libraries aufzulisten.
-
- Interessierter
- Beiträge: 69
- Registriert: Donnerstag 17. Oktober 2002, 13:42
Mach das nicht! Deine binutils-2.15.x ist buggy. Du brauchst wenigstens binutils-2.16.91.0.5 dafür.Das "-Wl,-O1" scheint keine negative Nebenwirkungen zu haben, und ich habe es in newmake übernommen.
Ist in der letzten Version (2.16.91.0.7) gefixt:Dagegen führt --as-needed zu fehlerhaftive Ergebnisse: Falls ein shared library Symbole von einem anderen shared Library benötigt, werden diese "sekundäre Abhängigheiten" durch --as-needed verworfen. Tuxbox baut nicht mit --as-needed. Letztendlich ist es die Aufgabe des Makefileauthors die notwendige Libraries aufzulisten.
http://sources.redhat.com/ml/libc-alpha ... 00134.html
Changes from binutils 2.16.91.0.6:
1. Update from binutils 2006 0317.
2. Support Intel Merom New Instructions in assembler/disassembler.
3. Support Intel new instructions in Montecito.
4. Fix linker "--as-needed" (PR 2434).
5. Fix linker "-s" regression (PR 2462).
6. Fix REP prefix for string instructions in x86 disassembler
(PR 2428).
7. Fix the weak undefined symbols in PIE (PR 2218).
8. Fix 2 DWARF reader bugs (PRs 2443, 2338).
9. Improve ELF linker error message (PR 2322).
10. Avoid abort with dynamic symbols in >64K sections (PR 2411).
11. Handle mismatched symbol types for executables (PR 2404).
12. Avoid a linker linkonce regression (PR 2342).
-
- Developer
- Beiträge: 1475
- Registriert: Dienstag 4. Februar 2003, 22:02
Kannst du es weiter erläutern? "Alle" software ist "buggy". Ich habe keine Probleme feststellen können -- was natürlich nicht bedeutet das es keine gibt.Lior hat geschrieben:Mach das nicht! Deine binutils-2.15.x ist buggy. Du brauchst wenigstens binutils-2.16.91.0.5 dafür.Das "-Wl,-O1" scheint keine negative Nebenwirkungen zu haben, und ich habe es in newmake übernommen.
PR2434 scheint ein ganz anderes Problem zu sein.Ist in der letzten Version (2.16.91.0.7) gefixt:Dagegen führt --as-needed zu fehlerhaftive Ergebnisse: Falls ein shared library Symbole von einem anderen shared Library benötigt, werden diese "sekundäre Abhängigheiten" durch --as-needed verworfen. Tuxbox baut nicht mit --as-needed. Letztendlich ist es die Aufgabe des Makefileauthors die notwendige Libraries aufzulisten.
http://sources.redhat.com/ml/libc-alpha ... 00134.htmlChanges from binutils 2.16.91.0.6:
1. Update from binutils 2006 0317.
2. Support Intel Merom New Instructions in assembler/disassembler.
3. Support Intel new instructions in Montecito.
4. Fix linker "--as-needed" (PR 2434).
5. Fix linker "-s" regression (PR 2462).
6. Fix REP prefix for string instructions in x86 disassembler
(PR 2428).
7. Fix the weak undefined symbols in PIE (PR 2218).
8. Fix 2 DWARF reader bugs (PRs 2443, 2338).
9. Improve ELF linker error message (PR 2322).
10. Avoid abort with dynamic symbols in >64K sections (PR 2411).
11. Handle mismatched symbol types for executables (PR 2404).
12. Avoid a linker linkonce regression (PR 2342).
-
- Interessierter
- Beiträge: 69
- Registriert: Donnerstag 17. Oktober 2002, 13:42
Wenn du hier http://sourceware.org/ml/binutils/2006-03/msg00340.html und hier http://sourceware.org/ml/binutils/2006-03/msg00344.html guckst, siehst du dass es doch gefixt ist.PR2434 scheint ein ganz anderes Problem zu sein.
ld reports now undefined symbols at link time.Not reporting the undefined symbol at link time was simply a bug.
das heisst, Tuxbox baute nicht mit --as-needed. besser gesagt, es baute, aber es gab unresolved symbols at runtime. ich denke es ist jetzt eine gute gelegenheit, das ganze mit --as-needed zu builden und Makefiles, configure scripts zu fixen. das erwarte ich natürlich nicht von dir, du hast bestimmt genug zu tun. ich werde es ma versuchen, wenn ich mehr zeit habe.
Danke für deine review.