gcc - unbekannte Schalter (auch in der Manpage nicht vorhanden)

7

Ich versuche mit gemeinsam genutzten Objekten zu experimentieren und habe das folgende Snippet auf http://www.gambas-it.org/wiki/index.php?title=Creare_una_Libreria_condivisa_(Shared_Library)_.so gefunden

gcc -g -shared -Wl,-soname,libprimo.so.0 -o libprimo.so.0.0 primo.o -lc

Ich habe mich in den Manpages und online umgesehen, aber ich habe nicht gefunden, was der -lcSchalter bewirkt. Kann mir jemand sagen?

DDS
quelle
2
Die kurze Antwort lautet, dass diese Option in diesem Fall nichts bewirkt, da -lc(Link zu libc) automatisch durch die Spezifikationen von gcc hinzugefügt wird (sofern -nodefaullibsoder nicht -nostdlibverwendet), wie Sie leicht sehen können, indem Sie sie weglassen und die -vOption zu gcc hinzufügen .
Mosvy
2
... und das Hinzufügen selbst kann zu Problemen führen, da möglicherweise Dinge (wie crtend.ooder libgcc.a) nach allen normalen Bibliotheken, aber vor der Kern-C-Bibliothek verknüpft werden müssen .
zwol

Antworten:

26

Die Option wird als " -l_library_" (kein Leerzeichen) oder " -l _library_" (mit einem Leerzeichen) angezeigt und cist das Bibliotheksargument ,
siehe https://linux.die.net/man/1/gcc

-lcwird verlinken libc( -lfoobarwürde verlinken libfoobaretc.)

Allgemeine Informationen zu Optionen und Argumenten

UNIX-Befehle akzeptieren häufig Optionsargumente mit oder ohne Leerzeichen. Wenn Sie eine Option haben, odie ein Argument argakzeptiert, können Sie schreiben -o argoder -oarg. Auf der anderen Seite können Sie Optionen kombinieren, die kein Argument enthalten, z . B. -a -b -coder -abc.
Wenn Sie sehen -lc, können Sie in der Dokumentation (Manpage) nur herausfinden, ob dies die Kombination von Optionen -lund / -coder Option -lmit Argument coder einer einzelnen Option ist -lc.

Siehe auch https://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html

Hinweis: gcc ist eine Ausnahme von diesem allgemeinen Konzept. Sie können keine Optionen für kombinieren gcc.

Bodo
quelle
Danke, die Tatsache, dass es keinen Platz gab, führte mich zu Verwirrung.
DDS
2
Sie können Optionen nicht mit kombinieren cc, auch wenn sie keine Argumente enthalten (Sie können nicht cc -cgstattdessen schreiben cc -c -g.
mosvy
8

-lcLinks mit libcder C-Bibliothek.

Siehe die Beschreibung -llibraryin der Dokumentation .

Stephen Kitt
quelle