Langage c include<bib>
Fermé
betyzak
Messages postés
40
Date d'inscription
dimanche 5 décembre 2010
Statut
Membre
Dernière intervention
6 janvier 2011
-
4 janv. 2011 à 20:45
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 4 janv. 2011 à 21:34
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 4 janv. 2011 à 21:34
A voir également:
- Langage c include<bib>
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Dev-Pascal - Télécharger - Édition & Programmation
1 réponse
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
Modifié par mamiemando le 4/01/2011 à 21:35
Modifié par mamiemando le 4/01/2011 à 21:35
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