-l<name>
ist nur eine Abkürzung, die besagt "Suchen nach lib<name>.so
oder lib<name>.a
in den konfigurierten Bibliothekspfaden", und -L.
fügt einfach das aktuelle Verzeichnis zu diesem Pfad hinzu.
Natürlich -l
wird bei der Verwendung von echten Bibliotheken der Vorzug gegeben, da es nicht erforderlich ist, den vollständigen Pfad der Bibliothek oder verschiedene Betriebssystemdetails (wie .so
vs .dylib
vs .a
vs .dll
) zu kennen, es sollte jedoch kein Unterschied bei der Ausgabe der ausführbaren Datei sein.
$ gcc -o out1 main.c libtest.so $ gcc -o out2 main.c -L. -ltest $ md5sum out* b1b8f46bf6091377b202df90d6bd32cc out1 b1b8f46bf6091377b202df90d6bd32cc out2
In der ld
Manualpage finden Sie eine ausführlichere Beschreibung von -l
und -L
.