Ich versuche, ein Hallo-Welt-Projekt für dynamische Linux-Bibliotheken (.so-Dateien) zu erstellen. Also ich habe eine Datei hello.c:
#include <stdio.h>
void hello()
{
printf("Hello world!\n");
}
Wie erstelle ich eine .so-Datei, die hello()
mit gcc von der Befehlszeile exportiert?
Um eine gemeinsam genutzte Bibliothek zu generieren, müssen Sie zuerst Ihren C-Code mit dem Flag -fPIC
(Positionsunabhängiger Code) kompilieren.
gcc -c -fPIC hello.c -o hello.o
Dadurch wird eine Objektdatei (.o) generiert. Nun nehmen Sie diese und erstellen die .so-Datei:
gcc hello.o -shared -o libhello.so
[~ # ~] edit [~ # ~] : Vorschläge aus den Kommentaren:
Sie können verwenden
gcc -shared -o libhello.so -fPIC hello.c
es in einem Schritt zu tun. - Jonathan Leffler
Ich empfehle außerdem, -Wall
Hinzuzufügen, um alle Warnungen zu erhalten, und -g
, Um Debugging-Informationen zu Ihren Befehlen gcc
zu erhalten. - Basile Starynkevitch