Ich versuche, ein Hallo-Welt-Projekt für dynamische Linux-Bibliotheken (.so-Dateien) zu erstellen. Ich habe also eine Datei hello.c:
#include <stdio.h>
void hello()
{
printf("Hello world!\n");
}
Wie erstelle ich eine .so-Datei, die hello()
exportiert , mit gcc von der Kommandozeile aus?
Antworten:
Um eine gemeinsam genutzte Bibliothek zu generieren, müssen Sie zuerst Ihren C-Code mit dem -fPIC
kompilieren (positionsunabhängiger Code) Flag.
gcc -c -fPIC hello.c -o hello.o
Dadurch wird eine Objektdatei (.o) generiert, jetzt nehmen Sie sie und erstellen die .so-Datei:
gcc hello.o -shared -o libhello.so
BEARBEITEN :Vorschläge aus den Kommentaren:
Sie können
verwendengcc -shared -o libhello.so -fPIC hello.c
um es in einem Schritt zu tun. – Jonathan Leffler
Ich schlage auch vor, -Wall
hinzuzufügen um alle Warnungen zu erhalten, und -g
um Debugging-Informationen zu erhalten, an Ihren gcc
Befehle. – Basile Starynkevitch