2016-04-30 9 views
1

Zum Beispiel, wenn ich mitWie können sich überzählige Links/Bibliotheken auf die ausführbare Ausgabe während der Kompilierung auswirken?

-lGL -lm -lglfw3 
mit

-L/usr/X11R6/lib -L/usr/local/lib -lGL -lGLU -lm -lglut -lGLEW -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXcursor -lXinerama 

und dem Ausgang ausführbaren kompilierte genausogut (und perceivably funktionierte genauso gut), wie wenn verknüpfen nur das Objekt „example.o“ verknüpfen war

Wie können dann die exzessiven Verknüpfungen der früheren Kompilierung (wenn überhaupt) eine ausführbare Datei für den Endbenutzer betreffen? Lade-/Laufzeiten? Für größere Programme (zu verstehen, dass "example.o" eher klein ist)?

Diese Frage mag zugegebenermaßen zu meiner eigenen Erbauung sein.

+1

Offensichtlich abhängig vom Linker, aber ich stelle mir vor, die zusätzlichen Bibliotheken haben wenig Wirkung. Die Verknüpfungszeit wird geringfügig erhöht, da die Suche nach allen Symbolen länger dauert. Wenn jedoch die zusätzlichen Symbole nicht verwendet werden und Ihr Linker seinen Wert wert ist, sollten die ausführbare Größe und die Laufzeit überhaupt nicht beeinträchtigt werden. –

Antwort

1

Wenn der Compilertreiber standardmäßig die Option "--as-needed" an den Linker übergibt, hat dies keinen Einfluss auf die resultierende Binärdatei, da der Linker die nicht benötigten Bibliotheksabhängigkeiten löscht.

Das Debian-Wiki als einen ausführlichen Artikel dazu: Debian DSO Linking.

+0

Vielen Dank für den Gedanken! Ich werde den Artikel in Kürze lesen. – zzz

Verwandte Themen