Ich möchte meine eigene Bibliothek für die Kompilierung in c hinzufügen, weiß aber nicht, wo Ubuntu sie speichert.
Ich möchte meine eigene Bibliothek für die Kompilierung in c hinzufügen, weiß aber nicht, wo Ubuntu sie speichert.
Antworten:
Ausgehend von Ihren Kommentaren zu Ihrer Frage, denke ich, was Sie wirklich fragen, ist: "Wie installiere ich eine benutzerdefinierte Bibliothek, die ich geschrieben habe, und wo soll ich sie ablegen?"
Im Allgemeinen werden Dinge, die lokal für andere Benutzer auf dem Computer erstellt wurden, in den Baum / usr / local gestellt. Die Header-Datei sollte sich in / usr / local / include befinden. Die kompilierte Bibliothek sollte sich in / usr / local / lib befinden. Die .c-Datei ist nicht Teil der Bibliothek, sie ist Teil der Quelle und normalerweise nicht für den Endbenutzer installiert. Sie benötigen Root-Zugriff, um Dateien an einem dieser Speicherorte abzulegen.
Um die Bibliothek zu erstellen, müssen Sie zunächst entscheiden, ob Sie eine statische oder dynamische (gemeinsam genutzte) Bibliothek möchten. Weitere Informationen zum Erstellen einer gemeinsam genutzten Bibliothek finden Sie in Abschnitt 3.4, Erstellen einer gemeinsam genutzten Bibliothek unter http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html . (Sie haben auch Empfehlungen, wo man Sachen ablegt - die meisten Entwickler werden eine oder drei Meinungen haben :-))
Je nach Bibliothek speichert Ubuntu seine Bibliotheken hauptsächlich an drei Orten
Das Folgende ist vom Dateisystem-Hierarchie-Standard
/ lib
Das Verzeichnis / lib enthält die gemeinsam genutzten Bibliotheksimages, die zum Booten des Systems und Ausführen der Befehle im Root-Dateisystem erforderlich sind, d. H. durch Binärdateien in / bin und / sbin.
/ usr / lib
/ usr / lib enthält Objektdateien, Bibliotheken und interne Binärdateien, die nicht direkt von Benutzern oder Shell-Skripten ausgeführt werden sollen. [22]
Anwendungen können ein einzelnes Unterverzeichnis unter / usr / lib verwenden. Wenn eine Anwendung ein Unterverzeichnis verwendet, müssen alle architekturabhängigen Daten, die ausschließlich von der Anwendung verwendet werden, in diesem Unterverzeichnis abgelegt werden.
/ usr / local / lib enthält lokale Bibliotheken, dh eine für dieses System spezifische, aber ich kann in FHS keine Verweise auf / usr / local / lib finden, sie enthalten nur Erklärungen für / usr / local.
Ubuntu folgt dem Filesystem Hierarchy Standard ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard ), reguläre Anwendungsbibliotheken sollten unter / usr / lib gespeichert werden.
Beachten Sie, dass das Entwickeln / Verwalten von Bibliotheken kein triviales Thema ist. Lesen Sie die ausführlichere Dokumentation. Hier finden Sie ein nützliches Tutorial: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
Sie sollten dem Compiler mitteilen, wo er Ihre Bibliothek finden kann. Angenommen, der Pfad zu Ihrer Bibliothek lautet "/path/to/lib/libfoo.a". Sie könnten Ihr Programm "hello.c" folgendermaßen kompilieren und verknüpfen:
gcc -L/path/to/lib -lfoo hello.c
Dies ist nicht Ubuntu-spezifisch, tatsächlich unterstützen alle mir bekannten C-Compiler diese Flags.
In Ubuntu findet man sie in /usr/include
.
/usr/include
. Die eigentlichen Binärdateien für eine Bibliothek werden dort nicht gespeichert. Header können als Teil einer Bibliothek betrachtet werden, müssen jedoch separat installiert werden und werden zum Kompilieren von Programmen verwendet, die eine Bibliothek verwenden. Sobald ein Programm kompiliert wurde, das eine Bibliothek verwendet, benötigt oder verwendet es die Header-Dateien nicht mehr.