wake-up-neo.com

Erstellen Sie eine .so-Datei aus einer .c-Datei mit der gcc-Befehlszeile

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?

138
sashoalm

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

241
dreamcrash