web-dev-qa-db-fra.com

Construire un fichier .so à partir d'un fichier .c en utilisant la ligne de commande gcc

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?

138
sashoalm

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

241
dreamcrash