[Langage C] Makefile

Fermé
Jonathan - 7 janv. 2009 à 16:52
 loupius - 7 janv. 2009 à 22:22
Bonjour,

Pour un cours d'information (mais je ne fais pas d'info), j'ai un petit projet qui consiste à créer une librairie en C qui permet de travailler sur les polynômes (addition, soustraction, division, dérivée...).

Je dois aussi créer un programme "demo.c" pr exploiter la librairie, et montre que celle-ci fonctionne.

J'arrive donc à mon problème le prof nous demande d'inclure dans notre projet un makefile qui doit générer la librairie (libPolyReal).

Je ne comprends pas, vous me dites si je me trompe :-), un makefile ca génère un fichier .o (qui correspond à un .exe sous windows ?). Comment une libraire peut-elle être exécutable ?

Ma librairie n'est qu'un fichier .c et un fichier. h ca devrait donc être assez succinct non ?

Merci de vos réponses pour m'éclairer!! :)

A bientôt,

Jonathan

3 réponses

Comme personne ne répond, je vais prendre ma plume; mais je vais faire très court.
En général, la commande 'make' interprète un fichier texte 'Makefile'; dans ce fichier il rencontrera des couples dépendances/commandes; en fonction du résultat du test sur les dépendances il exécutera ou pas la commande. Le test sur les dépendances est du style: tel fichier est-il plus récent que tel autre?
Quel est l'intérêt?
Souvent un projet est constitué d'une multitude de fichiers. Si on modifie des fichiers, on peut lancer une commande pour tout reconstruire mais ce n'est pas très efficace au point de vue du temps; il vaudrait mieux ne recompiler que les fichiers modifiés et aussi ceux qui en dépendent; c'est ce que sait faire 'make' à merveille.
Donc 'make' fait ce qu'on lui a demandé (par exemple générer un fichier .o).
Un fichier '.o' n'est pas un exécutable, c'est un fichier objet.
Un librairie, ou plus exactement une bibliothèque, est évidemment fabriqué à partir de fichiers sources (.c ou .cpp en C) mais ces fichiers ont besoin d'être compilés pour être utilisables. A partir d'un '.o' ou de plusieurs '.o', on organise ces fichiers en un seul que l'on appelle bibliothèque et qui pourra être utilisé par d'autres programmes. La bibliothèque n'est pas, en elle même, exécutable; elle le devient après avoir été 'incorporée' à un programme exécutable.
Il y a beaucoup à dire sur 'make' et sur les bibliothèques.
1
Merci pour cette réponse. Je commence à mieux comprendre.

Par conséquent qd il demande de mettre le makefile pour générer la bibliothèque.

Je dois faire un makefile qui génère un fichier .o qui correspond à ma bibliothèque c'est bien cela ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
7 janv. 2009 à 21:54
Salut,

Voici un tutoriel
0
J'ai vu ce tutoriel mais il n'est pas simple qd on ne connait quasiment rien à Linux...

Exemple :
gcc -o hello.o -c hello.c -W -Wall -ansi -pedantic
=> je comprends vrmt pas a quoi sert tout ces trucs...

Sur windows j'appuie sur F9 ça compile c'est plus simple ; )


Est-ce que l'objectif d'un makefile c'est de faire un exécutable ? Ou cela peut être juste de construire un fichier objet ? Je ne vois pas l'intéret dans une bibliotheque dans tout les cas : /
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Jonathan
7 janv. 2009 à 22:09
Salut,

Je ne comprends pas non plus le langage SMS.
Merci de ne plus l'utiliser sur CCM.

gcc c'est un compilateur en ligne de commande que tu n'est pas obligé de l'utiliser
Il y a des IDE graphics sous Linux
http://developer.kde.org/documentation/tutorials/index.html
http://www.codeblocks.org/downloads/binaries
https://fr.wikipedia.org/wiki/Anjuta

Pour voir que veut dire les option de gcc il faut lire man gcc
0
loupius > Jonathan
7 janv. 2009 à 22:22
gcc -o hello.o -c hello.c -W -Wall -ansi -pedantic
=> je comprends vrmt pas a quoi sert tout ces trucs...


Tous ces trucs, c'est la base de la compilation... il faut que tu cherches sur le net (il y a tout ce qu'il faut) ou dans des bouquins ou dans les 'man', en bref toute la doc existe et est accessible.
Ce n'est pas la peine d'aller plus loin, il faut déjà comprendre cela.
Enfin c'est mon humble avis.
0