J'essaie de créer un projet hello world pour les bibliothèques dynamiques Linux (fichiers .so). J'ai donc un fichier hello.c:
#include <stdio.h>
void hello()
{
printf("Hello world!\n");
}
Comment créer un fichier .so qui exporte hello()
, à l'aide de gcc à partir de la ligne de commande?
Pour générer une bibliothèque partagée, vous devez d’abord compiler votre code C avec l’indicateur -fPIC
(code indépendant de la position).
gcc -c -fPIC hello.c -o hello.o
Cela va générer un fichier objet (.o), maintenant vous le prenez et créez le fichier .so:
gcc hello.o -shared -o libhello.so
EDIT: Suggestions tirées des commentaires:
Vous pouvez utiliser
gcc -shared -o libhello.so -fPIC hello.c
le faire en une étape. - Jonathan Leffler
Je suggère également d'ajouter -Wall
pour obtenir tous les avertissements et -g
pour obtenir les informations de débogage, à vos commandes gcc
. - Basile Starynkevitch