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
Bei täglichen Betriebs- und Wartungsarbeiten werd...
1. Beschreibung der Schwachstelle Am 15. Mai 2019...
Inhaltsverzeichnis Rekursiver Aufruf der Komponen...
Tomcat greift auf das Projekt zu, normalerweise I...
01. Befehlsübersicht dirname - entfernt nicht zu ...
Vertikale Teilung Vertikale Aufteilung bezieht si...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 502 Bad Gateway Fehlerbildung ...
Ich habe kürzlich ein WeChat-Applet geschrieben u...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Matlab-Centroid-Algorithmus Da...
Es gibt zwei Situationen 1. Startzeit und Endzeit...
Mein erstes Serverprogramm Ich lerne gerade, Onli...
Die Implementierung des Suchbinärbaums in JavaScr...
In diesem Artikelbeispiel wird der spezifische Co...