(Courriels de diversion: <releguerons@remploierions-fausserions.com> <rigoriste@imprevoyance-introspectif.com> <arrêtees@immuniserent-prefigurerent.com> <amorcerent@valse-hesitation-rengagement.com> <resiste@lancineront-perversions.com> <bandes@rapprocher-surestimaient.com> <immanents@pessimiste-faciliteriez.com> <vexeront@crotte-desargentee.com> <dissipions@recopierent-debarrassiez.com> <majeures@molestons-decaleront.com> )
Eric Marsden wrote: > > >>>>> "JMF" == Jean Michel Flambard <jmflamba@mail.club-internet.fr> writes:> > JMF> Comment faire sous Linux pour compiler plusieurs fichiers et faire > JMF> l'edition des liens afin de former 1 seul programme. (en C++ avec > JMF> g++) > JMF> > JMF> Exemple: j'ai 3 fichiers ecrit en C++ > JMF> truc.h //Contient mes declarations de classes > JMF> truc.cpp //Contient les definitions des classes > JMF> et trucPrincipal.cpp // Ma fonction main > JMF> > JMF> et je voudrai avoir un fichier executable truc.exe ou quelque chose > JMF> comme ca. > > gcc -I . -c truc.cpp > gcc -I . -c trucPrincipal.cpp > gcc -o truc truc.o trucPrincipal.o -lm > > La vraie solution est d'utiliser make, qui saura créer les .o à partir > des .cpp, et automatiser le processus de compilation et linkage. Il > suffirai d'une Makefile du style (lire la doc de make): > > CC = gcc > OBJ = truc.o trucPrincipal.o > > truc: $(OBJ) > $(CC) -o truc $(OBJ) -lm Je dirais meme, si tu t'en sens le courage, de lire la doc "The GNU configure and build system"[1]. Il s'agit de documents livres avec les sources d'autoconf, automake alocale libtool etc.... qui permet de creer des scripts generateurs de makefiles quel que soit le systeme.... C'est un peu long a expliquer ici mais si on prend un exemple ca va vite eclaircir la chose : Voila tu ecris un programme pour linux sur ta becane perso ou tu es root et ou tu as installe toutes tes librairies dans /usr/lib et dans /usr/local/lib. Et arrive le grand jour ou tu decides de mettre ton programme en opensource sur un serveur cvs afin que tout le monde puisse en profiter et participer au developpement (ou sinon tu le pretes a un pote pour lui montrer ce que fait ton programme). Mais voila, si tu utilises pas autoconf automake etc, il y a fort a parier que tout cela ne marchera pas... Par exemple si ton pote peut pas etre root et qu'en plus il tourne sous Solaris, il y a fort a parier que des librairies comme GTK+ soient installees quelque part dans son home (heresie je sais). Il devra donc se retaper la Makefile pour changer tous ses path pour les includes etc.... Ce qui n'est bien entendu pas cool. L'astuce proposee par automake [1.2] et autoconf [1.1] est axee autour de shell scripts qui sont automatiquement generes a partir de fichiers de conf (je vais pas trop detailler ;)). Ce fichier s'appelle configure (tiens ca vous rappelle rien?). Il va, en fonction des desideratas du programmeur, s'ammuser a faire un "Scan" de la config et de construire un fichier "config.h", contenant les differents defines pour la plateforme cible, et un fichier Makefile (ou plusieurs dans le cadre d'un projet "arborescent") qui permettra de compiler _sans aucun probleme_! Ton pote a donc juste a taper configure (suivi eventuellement de d'options) puis make.... et ca compilatione :) [1] voici les urls : [1.1] http://www.gnu.org/manual/autoconf/autoconf.html [1.2] pour automake : ftp://ftp.cygnus.com/pub/tromey/ -- J-C Arnu -----------------------------------------------------------JX- Stagiaire DEA IFP - ENSEEIHT |Phone : 0561336320 LAAS-CNRS - Groupe OLC - 7, avenue du colonel Roche, 31077 Toulouse _______________________________________________________________________ Le CULTe sur le ouebe: http://savage.iut-blagnac.fr/