PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum ist der GCC Linker so langsam?



Boron
07-01-2004, 11:05
Hallo zusammen,

warum ist der GCC Linker eigentlich so viel langsamer als der Linker von Microsoft?

Bei vergleichbar großen Programmen mit etwa gleich viel benutzten Bibliotheken ist der GCC Linker unter Linux bei mir vieeeel langsamer als das MS Pendant (ich denke mal so etwa der 3-fache Zeitbedarf bis die fertige Binärdatei vorliegt :confused: ).

Was ist bei der GCC anders?

peschmae
07-01-2004, 11:40
Ist das auch unter MinGW der fall, oder nur unter Linux?

MfG Peschmä

wraith
07-01-2004, 11:41
Der Microsoft Linker ist ein "Incremental Linker".

peschmae
07-01-2004, 12:06
d.h. er merkt sich zwischenergebnisse?

Kann das der neuste GCC nicht auch? Oder kommt das mit 3.4?


Ist ne faq: http://gcc.gnu.org/fom_serv/cache/60.html



Incremental linking is part of the linker, not the compiler. As such, GCC doesn't have anything to do with incremental linking.
Depending on what platform you use, it may be possible to tell GCC to use the platform's native linker (e.g., Solaris' ild(1)).


aber nicht sehr erhellend. Was ist nun der Linker auf einem "normalen" Linux?


MfG Peschmä

anda_skoa
07-01-2004, 14:16
Original geschrieben von peschmae

aber nicht sehr erhellend. Was ist nun der Linker auf einem "normalen" Linux?



ld

Ist vorallem bei C++ äußerst langsam, zumindest ältere Versionen.
Soll bei neuen binutils besser sein.

Um einen Teil des langsamen Runtime Linkens abzufangen, wurde bei KDE der kdeinit Workaround eingeführt, weil sonst die Startzeit von C++ Programmen mit dynamischen Libs extrem lange dauert.
(Diesen Workaround benutzen aber nur ein paar der häuiger benutzen Programme)

Ciao,
_

peschmae
07-01-2004, 16:15
ah so.

Also das Ding das mir den Output von GCC/GCJ/G++ zusammenlinkt ist dasselbe wie das Teil, das mir dann zur Laufzeit die Libs lädt?
Und das gehört also nicht zu gcc sondern zu den binutils. Soso.

MfG Peschmä