A voir également:
- Langage c include<bib>
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
1 réponse
Pour inclure un header (et non une librairie), on fait tout simplement un #include :
Si le header est dans un répertoire standard (par exemple /usr/include sous linux) ou référencer par les options de compilations (options -I ou -isystem avec gcc) on peut utiliser l'opérateur < > :
Pour compiler avec une librairie les options diffère s'il s'agit d'une librairie statique ou dynamique. Sous linux, une librairie a un nom qui commence par "lib..."
Une librairie statique (.a sous linux et .lib sous windows) se passe en paramètre à la dernière étape de compilation au moment du linkage :
Pour une librairie dynamique (.so sous linux et .dll sous windows), il faut utiliser l'option -l. Si par exemple on veut linker avec libplop.so :
(note que le préfixe "lib..." a disparu et que l'extension .so n'apparaît pas). Le compilateur cherche le .so dans les répertoires standards (/lib, /usr/lib, /usr/local/lib) mais si la librairie est à un autre endroit il faut référencer son répertoire :
- avec l'option -L pour une librairie statique
- avec l'option -Wl,R pour une librairie dynamique
Une compilation est assez fastidieuse comme tu peux le constater. C'est pourquoi on met en place généralement un makefile qui permet de facilement compiler le projet tout en s'affranchissant de l'IDE utilisé (visual studio, kdevelop, anjuta... ou aucun !).
Voici par exemple à quoi ça ressemble (makefile écrit à l'arrache et loin d'être parfait) :
Remarque sur les makefile : chaque instruction (en italique) DOIT être précédé du caractère tabulation (et non d'espace).
Bonne chance
#include "chemin/relatif/vers/header.h" #include "/chemin/absolu/vers/header.h"
Si le header est dans un répertoire standard (par exemple /usr/include sous linux) ou référencer par les options de compilations (options -I ou -isystem avec gcc) on peut utiliser l'opérateur < > :
// revient à #include "/usr/include/stdio.h" #include <stdio.h> // revient à #include "/usr/include/boost/cstdlib.hpp" #include <boost/cstlib.hpp>
Pour compiler avec une librairie les options diffère s'il s'agit d'une librairie statique ou dynamique. Sous linux, une librairie a un nom qui commence par "lib..."
Une librairie statique (.a sous linux et .lib sous windows) se passe en paramètre à la dernière étape de compilation au moment du linkage :
gcc -W -Wall -c fichier1.c -o fichier1.o gcc -W -Wall -c fichier2.c -o fichier2.o gcc -W -Wall -c fichier3.c -o fichier3.o gcc -W -Wall main.c fichier1.o fichier2.o fichier3.o libplop.a
Pour une librairie dynamique (.so sous linux et .dll sous windows), il faut utiliser l'option -l. Si par exemple on veut linker avec libplop.so :
gcc -W -Wall -c fichier1.c -o fichier1.o gcc -W -Wall -c fichier2.c -o fichier2.o gcc -W -Wall -c fichier3.c -o fichier3.o gcc -W -Wall main.c fichier1.o fichier2.o fichier3.o -lplop
(note que le préfixe "lib..." a disparu et que l'extension .so n'apparaît pas). Le compilateur cherche le .so dans les répertoires standards (/lib, /usr/lib, /usr/local/lib) mais si la librairie est à un autre endroit il faut référencer son répertoire :
- avec l'option -L pour une librairie statique
- avec l'option -Wl,R pour une librairie dynamique
Une compilation est assez fastidieuse comme tu peux le constater. C'est pourquoi on met en place généralement un makefile qui permet de facilement compiler le projet tout en s'affranchissant de l'IDE utilisé (visual studio, kdevelop, anjuta... ou aucun !).
Voici par exemple à quoi ça ressemble (makefile écrit à l'arrache et loin d'être parfait) :
# Variables CC = gcc CFLAGS = -W -Wall EXE = plop OBJS = fichier1.o \ fichier2.o \ fichier3.o # Compile tout all: main.c $(OBJS) @echo "Linking" $(CC) $(CFLAGS) main.c $(OBJS) -o $(EXE) # Nettoie les fichiers intermédiaires clean: rm -f *.o # Compile un module %.o: %.c @echo "Compiling $@" $(CC) $(CFLAGS) -c $< -o $@
Remarque sur les makefile : chaque instruction (en italique) DOIT être précédé du caractère tabulation (et non d'espace).
Bonne chance