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

Verknüpfen Sie die .so-Datei mit der .cpp-Datei über g++-Kompilierung

jetzt von dem, was ich sehen kann, ist der Befehl -l + filename , zum Beispiel ist mein Dateiname directory/libtest.so es wäre -ldirectory/libtest.so

Nein, das ist nicht richtig. Es sollte -Ldirectory -ltest sein d.h. Sie verwenden -L um den Suchpfaden ein Verzeichnis hinzuzufügen, in dem der Linker nach Bibliotheken sucht, und Sie sagen mit -l, welche Bibliotheken verlinkt werden sollen , sondern auf libtest.so verlinken oder libtest.a Sie sagen -ltest ohne lib Präfix oder die Dateierweiterung.

Sie können Link durch explizite Benennung der Datei, ohne -L oder -l Optionen, also nur directory/libtest.so , aber für dynamische Bibliotheken ist das fast immer falsch, da es genau diesen Pfad in die ausführbare Datei einbettet, sodass sich dieselbe Bibliothek an derselben Stelle befinden muss, wenn das Programm ausgeführt wird. Normalerweise möchten Sie über den Namen (nicht den Pfad) darauf verlinken, damit die Bibliothek mit diesem Namen zur Laufzeit von jedem Ort aus verwendet werden kann.


Dies ist eine Schritt-für-Schritt-Anleitung zum Erstellen und Verknüpfen einer .so mit .cpp-Datei

  1. Erstellen Sie eine .cpp-Datei, die Sie in .so konvertieren möchten.
    Beispiel -
    #include<stdio.h> int add(int a , int b) { return a+b;}

    Speichern Sie es unter dem Namen add.cpp

  2. Erstellen Sie .so mit dem folgenden Befehl
    gcc -c -fPIC add.cpp -o add.o

    Dies erstellt libadd.so

  3. Erstellen Sie eine .cpp-Datei, die diese .so-Datei verwendet
    Beispiel-
    #include<stdio.h> extern int add(int a, int b); int main(int argc, char** argv) { printf("Hello the output is %d \n",add(10,15)); return 0; }

    Speichern Sie es als main_file.cpp

  4. Erstellen Sie mit diesem Befehl eine .o-Datei aus dieser Datei
    g++ -c main_file.cpp

  5. Verknüpfen Sie .so mit .o mit diesem Befehl
    g++ -o prog main_file.o -L. -ladd

    Hier gibt L den Ordner mit der .so-Datei an
    Und -l gibt den Namen der .so-Bibliothek

    an
  6. Führen Sie das Programm mit dem Befehl aus
    ./prog


Linux
  1. So erstellen Sie eine Datei im Plesk-Dateimanager

  2. Hardlinks und Softlinks in Linux erklärt

  3. Entfernen Sie leere Zeilen in einer Textdatei mit grep

  4. Verschieben Sie eine Datei und hinterlassen Sie einen Softlink

  5. Bestimmen Sie, ob das Dateisystem oder die Partition RO oder RW über Bash Script gemountet ist?

So erstellen Sie einen symbolischen Link in Linux mit dem Ln-Befehl

So laden Sie eine Datei mit Wget über Proxy in Linux herunter

So schützen Sie Websites per .htaccess mit einem Passwort

So laden Sie Dateien über den Dateimanager hoch

So löschen Sie Dateien/Ordner über den Dateimanager

Was sind symbolische Links in Linux? Wie erstellt man symbolische Links?