GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wo lege ich Bibliotheken von Drittanbietern ab, um eine C++-Linux-Entwicklungsumgebung einzurichten?

Wo sollen Bibliotheken abgelegt werden

Die beste Lösung ist die Verwendung des Paketsystems Ihrer Linux-Distribution (apt-get , yum , oder ähnliches), um nach Möglichkeit Bibliotheken aus von der Distribution bereitgestellten Paketen zu installieren.

Wenn die gepackten Bibliotheken der Distribution nicht aktuell genug sind oder wenn Sie einige nicht standardmäßige Build-Optionen benötigen oder wenn Sie eine Bibliothek benötigen, die Ihre Distribution nicht bereitstellt, können Sie sie selbst erstellen und installieren. Sie haben zwei Hauptoptionen für den Speicherort der Bibliothek:

  • /usr/local (Bibliotheken unter /usr/local/lib , Überschriften unter /usr/local/include ). Dies installiert die Bibliotheken systemweit und ist wahrscheinlich die einfachste Lösung, da Sie dann ohne zusätzliche Schritte darauf aufbauen können sollten. Installieren Sie Bibliotheken NICHT direkt unter /usr , da dies das Verpackungssystem Ihrer Distribution beeinträchtigen wird.
  • Unter Ihrem Projektverzeichnis, wie Sie es unter Windows getan haben. Dies hat den Vorteil, dass kein Root-Zugriff erforderlich ist und keine systemweiten Änderungen vorgenommen werden müssen, aber Sie müssen die Include-Pfade und Bibliothekspfade Ihres Projekts aktualisieren und alle gemeinsam genutzten Bibliotheksdateien irgendwo ablegen, wo der dynamische Linker sie finden kann ( mit LD_LIBRARY_PATH oder ld.so.conf - siehe Link für weitere Details).

Wie Bibliotheken funktionieren

Siehe David A. Wheelers exzellentes Programming Library HOWTO. Ich würde empfehlen, das zu lesen und dann spezifische Fragen als neue Themen zu posten.

So vertreiben Sie Ihr Programm

Traditionell enthalten Unix/Linux-Programme keine Kopien ihrer Abhängigkeiten. Es ist stattdessen Sache des Endbenutzers oder Entwicklers, diese Abhängigkeiten selbst zu installieren. Dies kann, wie Sie sagten, eine "große README" erfordern, aber es hat ein paar Vorteile:

  • Entwicklungsbibliotheken können über den Paketmanager der Distribution installiert, verwaltet und aktualisiert werden, anstatt dass jede Quellkopie ihren eigenen Satz von Bibliotheken zu verfolgen hat.
  • Es gibt nur eine Kopie einer bestimmten Bibliothek auf einem System, also gibt es nur eine Stelle, die aktualisiert werden muss, wenn zum Beispiel eine Sicherheitslücke gefunden wird. (Betrachten Sie zum Beispiel das Chaos, das entstand, als festgestellt wurde, dass zlib, eine sehr weit verbreitete Komprimierungsbibliothek, eine Sicherheitslücke aufwies, sodass jede Anwendung, die eine betroffene Version enthielt, aktualisiert werden musste.)
  • Wenn Ihr Programm populär genug ist (und Open Source oder zumindest frei verfügbar ist), möchten Paketbetreuer für verschiedene Linux-Distributionen es möglicherweise paketieren und in ihre Distribution aufnehmen. Paketbetreuer wirklich mag keine gebündelten Bibliotheken. Siehe zum Beispiel Fedoras Seite zu diesem Thema.

Wenn Sie Ihr Programm an Endbenutzer verteilen, sollten Sie erwägen, ein Paket (.dpkg oder .rpm ), die sie einfach herunterladen und installieren konnten, ohne den Quellcode verwenden zu müssen. Idealerweise würde das Paket aus Sicht des Endbenutzers zu den Repositories der Distributionen hinzugefügt (wenn es Open Source oder zumindest frei verfügbar ist), damit Benutzer es mit ihren Paketmanagern herunterladen können (apt-get oder yum ). Das kann alles kompliziert werden, da es eine große Anzahl von Linux-Distributionen gibt, aber ein Debian/Ubuntu-kompatibler .dpkg und ein Red Hat/CentOS/Fedora-kompatibles .rpm sollte einen guten Prozentsatz der Endbenutzer abdecken. Das Erstellen von Paketen ist nicht allzu schwer und es gibt online gute Anleitungen.


Zum ersten Teil Ihrer Frage zu Windows:Es gibt keinen wirklichen Standardort für Bibliotheken / Header unter Windows, daher lautet die einfache Lösung:Erstellen Sie Ihre eigenen. Stellen Sie einfach ein einzelnes lib/ und include/ auf Ihrem System bereit und lassen Sie es von allen Ihren Projekten verwenden (indem Sie den Pfad in einer cmake-Datei festlegen, die Sie überall einfügen). Fügen Sie dort alle Bibliotheken von Drittanbietern ein, zum Beispiel:

Ihre Projekte:

d:/projects/projectA
d:/projects/projectB

Zeug von Drittanbietern:

d:/api/lib/lua.lib
d:/api/include/lua/....

(Sie können sogar Symlinks, auch bekannt als „Verzeichnisverknüpfungen“, verwenden, wenn Sie eine andere Version haben)

und die entsprechende cmake-Datei:

include_directories( d:/api/include )
link_directories( d:/api/lib )

Linux
  1. Ein Leitfaden zum Verständnis von Linux-Softwarebibliotheken in C

  2. Termux verwandelt Android in eine Linux-Entwicklungsumgebung

  3. Einführung in gemeinsam genutzte Linux-Bibliotheken (So erstellen Sie gemeinsam genutzte Bibliotheken)

  4. C++ Dynamic Shared Library unter Linux

  5. Umgebungsvariable mit Leerzeichen in Linux setzen

So setzen und listen Sie Umgebungsvariablen in Linux auf

Richten Sie die lokale WordPress-Entwicklungsumgebung unter Linux ein

So setzen und löschen Sie Umgebungsvariablen unter Linux

Linux – Wo wird der Environment-String tatsächlich gespeichert?

Wo sollten Umgebungsvariablen für Jenkins festgelegt werden?

Einrichten einer glänzenden Entwicklungsumgebung in Linux unter Windows 10