Im Vergleich zu gewöhnlichen Programmen haben dynamische Linkbibliotheken keine Hauptfunktion, sondern sind die Implementierung einer Reihe von Funktionen. Generieren Sie so dynamische Linkbibliotheksdateien durch gemeinsame und fPIC-Kompilierungsparameter. Wenn das Programm eine Bibliotheksfunktion aufruft, muss es nur eine Verbindung zu dieser Bibliothek herstellen. Das Folgende implementiert beispielsweise eine einfache dynamische Linkbibliothek zum Transport von Ganzzahlarithmetik, definiert zwei Dateien, calculate.h und calculate.c, und erstellt die dynamische Linkbibliothek libcac.so. Nützliche Befehle für Binärdateien Überprüfen Sie den Dateityp Datei Anzeigen, mit welchen Bibliotheken eine Binärdatei verknüpft ist ldd Zeigen Sie die in der Binärdatei enthaltenen Symbole an. T bedeutet Laden, U bedeutet undefiniertes Symbol nm Informationen aus Binärdateien lesen readelf -a smu.o Konvertieren von Binärdateien in Assembly objdump -d Summe.o Generierung dynamischer Linkbibliotheken Summe.c #include <stdio.h> #include <stdlib.h> int Summe(int x){ int i, Ergebnis=0; für(i=0; i<=x; i++){ Ergebnis+=i; } wenn(x > 100) Ausgang (-1); Ergebnis zurückgeben; }; void-Anzeige(char*msg){ printf("%s\n",msg); } int add(float a,float b){ gib a+b zurück; } int Summe_Array(int Array[], int Num){ int i = 0, Summe = 0; für (i = 0; i < Zahl; ++i) Summe += Array[i]; Rücklaufsumme; } void array_modifizieren(int array[], int num){ int i = 0, Summe = 0; für (i = 0; i < Zahl; ++i) Array[i] *= 10; } main.c #include <stdio.h> #include <stdlib.h> int Haupt(void){ int x; printf("Geben Sie eine Ganzzahl ein:\n"); scanf("%d", &x); printf("Summe=%d\n", Summe(x)); gebe 0 zurück; }; Ausführbare Datei generieren gcc -c main.c -o main.o gcc -c Summe.c -o Summe.o gcc Summe.o Haupt.o Die Haupt-Ausführungsdatei wird generiert Datei main // ELF 64-bit LSB ausführbare Datei Datei sum.o // ELF 64-Bit LSB verschiebbar Da sum.c wiederverwendbare Funktionen enthält, möchte ich sum.c in eine dynamische Linkbibliothek kompilieren gcc sum.o -shared -o sum.so Ein Fehler ist aufgetreten.
Dies bedeutet, dass nicht alle O-Dateien in dynamische Linkbibliotheken kompiliert werden können. Sie müssen beim Generieren der O-Datei den Parameter -fPIC hinzufügen. gcc -c Summe.c -fPIC -o Summe.o gcc sum.o -o geteilte Summe.so Im Allgemeinen lautet der Kompilierungsbefehl für eine gemeinsam genutzte Bibliothek (vorheriges Experiment): Dynamische Linkbibliothek gcc -shared -fPIC -o libmyhello.so hallo.o gcc -o hallo main.c -L. -lmyhallo Statischer Link ar rcs libxx.a xx.o g++ -o main main.cpp -static -L. -lxx Zu diesem Zeitpunkt g++ -o main main.c Summe.so ./hauptsächlich Manchmal wird ein Fehler gemeldet
ldd Haupt Ausgabe: sum.so => nicht gefunden Zu diesem Zeitpunkt brauchen Sie export $LD_LIBRARY_PATH=pwd:$LD_LIBRARY_PATH Hinweis: -fPIC wird beim Generieren von .o verwendet und -shared wird zum Generieren dynamischer Linkbibliotheken verwendet Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Grafisches Tutorial zur Installation von MySQL5.7.18 im Windows-System
>>: Zusammenfassung einiger effizienter magischer Operatoren in JS
1. Clustered-Index Tabellendaten werden in der Re...
Spring-Integration mit SpringMVC Die web.xml-Konf...
1. Stoppen Sie zuerst den Datenbankserver Dienst ...
Die JSON-Daten müssen im HTML-Format zurückgegeben...
BMP ist ein von Hardwaregeräten unabhängiges und ...
Google China hat ein Übersetzungstool veröffentlic...
So schreiben Sie mithilfe von Filtern transparente...
Ergebnis: Implementierungscode: Muss mit der Swip...
Inhaltsverzeichnis 1. Phänomen 2. Lösung 3. Zusam...
In diesem Artikelbeispiel wird der spezifische Co...
In einigen Szenarien möchten wir derselben Ethern...
Vor Kurzem hat das Projekt die Umgebung gewechsel...
Egal ob Sie Webdesigner oder UI-Designer sind, di...
Überblick Was ist Hafen? Das englische Wort bedeu...
Als mir diese Frage gestellt wurde, war ich unwis...