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 -lc
Schalter bewirkt. Kann mir jemand sagen?
-lc
(Link zu libc) automatisch durch die Spezifikationen von gcc hinzugefügt wird (sofern-nodefaullibs
oder nicht-nostdlib
verwendet), wie Sie leicht sehen können, indem Sie sie weglassen und die-v
Option zu gcc hinzufügen .crtend.o
oderlibgcc.a
) nach allen normalen Bibliotheken, aber vor der Kern-C-Bibliothek verknüpft werden müssen .Antworten:
Die Option wird als "
-l_library_
" (kein Leerzeichen) oder "-l _library_
" (mit einem Leerzeichen) angezeigt undc
ist das Bibliotheksargument ,siehe https://linux.die.net/man/1/gcc
-lc
wird verlinkenlibc
(-lfoobar
würde verlinkenlibfoobar
etc.)Allgemeine Informationen zu Optionen und Argumenten
UNIX-Befehle akzeptieren häufig Optionsargumente mit oder ohne Leerzeichen. Wenn Sie eine Option haben,
o
die ein Argumentarg
akzeptiert, können Sie schreiben-o arg
oder-oarg
. Auf der anderen Seite können Sie Optionen kombinieren, die kein Argument enthalten, z . B.-a -b -c
oder-abc
.Wenn Sie sehen
-lc
, können Sie in der Dokumentation (Manpage) nur herausfinden, ob dies die Kombination von Optionen-l
und /-c
oder Option-l
mit Argumentc
oder 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 kombinierengcc
.quelle
cc
, auch wenn sie keine Argumente enthalten (Sie können nichtcc -cg
stattdessen schreibencc -c -g
.-lc
Links mitlibc
der C-Bibliothek.Siehe die Beschreibung
-l
library
in der Dokumentation .quelle