C sous Linux

Mémo pour la compilation manuelle en C avec GCC.

Compilation manuelle en mode console.

Compilation à partir d’un fichier source.

Pour compiler un programme, il suffit d’entrer :

gcc  -o programme programme.c

-o est l’option « output ». Si le nom du programme de sortie n’est pas donné, cgg fournira un fichier éxécutable nommé a.out.

On éxécute le fichier compilé en tapant en mode console la commande suivante :
. /programme  ( point slash programme ).

Compilation à partir de deux fichiers sources.

Il faut compiler séparément chaque fichier source avec l’option –c pour obtenir deux fichiers objets avec l’extension .o. On compile alors les deux fichiers objets pour obtenir un éxécutable.

gcc  –c  programme1.c
gcc  –c  programme2.c
gcc   programme1.o  programme2.o   –o  programme.

Créer des bibliothèques C.

Il s’agit ici des bibliothèques statiques. Celles-ci sont directement incluses dans le fichier éxécutable. Ces bibliothèque possèdent l’extension .a. Elles se trouvent normalement dans le répertoire /usr/lib/.

Soient deux fichiers sources fonction1.c et fonction2.c. On veut créer une bibliothèque incluant ces deux fichiers sources. La bibliothèque s’appellera libperso.a.

On compile les deux fichiers sources en fichiers objets :

gcc  –c  fonction1.c  fonction2.c

On crée la bibliothèque libperso .a :

ar  r  libperso.a  fonction1.o  fonction2.o

On génère un index :

ranlib  libperso.a

On crée maintenant le fichier header libperso.h en y incluant les prototypes des fonctions déclarées dans fonction1.c et fonction2.c.

Exemple : libperso.h

#ifndef DEF_LIBPERSO
#define DEF_LIBPERSO
extern int calcul(int) ;
extern int addition(int) ;
extern int plusvalue(int) ;
#endif

Il faut maintenant placer la bibliothèque libperso.a sous le repertoire /lib et le fichier header libperso.h sous le répertoire /include.

Pour (enfin ) compiler un fichier source programme.c avec cette bibliothèque, il faut inclure les répertoires précédents /lib et /include  avec les options –I (lette i majuscule ) et –L et préciser à l’éditeur de liens d’utiliser libperso.a par l’option –lperso :

gcc   -I  include  –L  lib  programme.c  -o programme –lperso

le programme s’éxécute en lançant en mode console :

. / programme

En exemple, j’ai compilé mon jeu MarioFT écrit en C avec la bibliothèque SDL comme ci-dessous :

gcc –I include –L lib –o MarioFT main.c constantes.h editeur.c jeu.c regles.c fichier.c  -lSDL –lSDLmain –lSDL_image –lfmod

( ! ) heureusement il y a la touche de rappel de ligne de commande en cas d’erreur de compilation ….

Publicités

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s