Comment compiler un programme .cpp

Résolu/Fermé
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020 - 19 mai 2009 à 08:17
diaboly Messages postés 79 Date d'inscription dimanche 21 novembre 2004 Statut Membre Dernière intervention 10 février 2012 - 20 mai 2009 à 08:25
Bonjour,

Je viens d'installer une librairie de classe cpp, mais quand j'utilise les headers de cette bibliothèque et lors de la compilation je trouve des problèmes . Lors de ma recherche, je trouve qu'il me faut configurer le makefile, j'ai trouvé est le fichier de configuration où on indiquera à gcc les différentes options de compilation et les différentes librairies à utiliser.Mais je sais pas comment faire.

Donnez moi un coup de main.
Merci

13 réponses

hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020
19 mai 2009 à 08:58
Enfin , voici mon code:
----------------------------------------------------------------
#include "cogitant/cogitant.h"
#include <iostream.h>

int main(int, char* [])
{
cout<<"Mon premier test"<<endl;
cogitant::Environment env;
return 0;
}
------------------------------------------------------------

Je compile avec:
c++ -c -Wno-deprecated test.cpp // cela marche sans erreurs
puis je tape ça:
c++ -o test test.o //là il m'affiche l'erreur suivante:

undefined reference to 'cogitant::Environment env(cogitant::Environment envAllocator const*)'
----------------------------------------------------------------
Et dans la doc du librairie, je trouve que pour compiler des programmes utilisant cogitant: il nous faut définir des liks; et il ont donnée un exemple de Make file qui est le suivant:
-------------------------------------------------------------
The following file can be used as a model for compiling programs using the library (construction of an executable named
minimum from a source file minimal.cpp). You may need to modify the line PROGRAM= in order to choose the name of the
executable result and the line SOURCES= to specify the names of the source files that constitute the program to be built (cpp
extension, use the space as a separator).
# CoGITaNT 5
# Construction d’un programme (Unix, methode standard, bibliotheque installee)
# David Genest
PROGRAM = minimal
SOURCES = minimal.cpp
CXXFLAGS = ‘cg-config --cflags‘
LDFLAGS = ‘cg-config --libs‘
OBJECTS = $(SOURCES:.cpp=.o)
$(PROGRAM): $(OBJECTS)
$(CXX) $(OBJECTS) $(LDFLAGS) -o $(PROGRAM)
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $<
clean:
$(RM) $(OBJECTS) $(PROGRAM)
-------------------------------------------------------------------------------
Hors que quand j'ouvre le fichier Makefile je le trouve rempli, je sais pas ou mettre tous ça; faut il creer un autre fichier Makefile????

Aidez moi s'il vous plait
0
diaboly Messages postés 79 Date d'inscription dimanche 21 novembre 2004 Statut Membre Dernière intervention 10 février 2012 22
19 mai 2009 à 09:19
Je ne prétends pas résoudre ton problème mais à tu essayé de compiler avec g++ ?
0
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020
19 mai 2009 à 09:58
Je viens d'essayer la compilation avec gcc mais toujours il y on a des problèmes genre: undefined refernce to....

Bon peut etre puisque je suis débutante j'arrive pas à appliquer ce qui a été expliqué dans la doc accompagné au librairie mais quelqu'un ayant de l'expériense peut la comprendre j'espère.

voici la procedure complete:

Compilation:
Specific parameters to be passed to the compiler involve two areas:
• The definition of pre-processor symbols for the management of assertions (ASSERT_MODE) and for the display of certain
information which ease debugging (LOG_MODE). These two symbols must be defined exactly the same way as when
compiling platform’s source, otherwise you may get link editing errors or erroneous behaviors: These parameters do not
depend on the application built with CoGITaNT but on the way the library was constructed.
• The addition of the directory containing headers files to the directories browsed by the pre-processor during the interpretation
of a directive #include.
Such parameters are sent to standard output when the script cg-config is called with the -cflags parameter. So, in order
to compile a file main.cpp using Cogitant’s classes, you can define a dependency in the Makefile of your program in the
following way:
main.o: main.cpp
$(CXX) ‘cg-config --cflags‘ -c $<
Link editing:
Parameters to be passed to the linker concern the path in which Cogitant’s library (dynamically linked archive or library) is
stored. These parameters are sent to standard output when the script cg-config is called with the -libs parameter. So, for
editing links of a program called test and built from a single object file called main.o, you can define this dependency :
test: main.o
$(CXX) ‘cg-config --libs‘ -o test main.o

Makefile example:
The following file can be used as a model for compiling programs using the library (construction of an executable named
minimum from a source file minimal.cpp). You may need to modify the line PROGRAM= in order to choose the name of the
executable result and the line SOURCES= to specify the names of the source files that constitute the program to be built (cpp
extension, use the space as a separator).
# CoGITaNT 5
# Construction d’un programme (Unix, methode standard, bibliotheque installee)
# David Genest
PROGRAM = minimal
SOURCES = minimal.cpp
CXXFLAGS = ‘cg-config --cflags‘
LDFLAGS = ‘cg-config --libs‘
OBJECTS = $(SOURCES:.cpp=.o)
$(PROGRAM): $(OBJECTS)
$(CXX) $(OBJECTS) $(LDFLAGS) -o $(PROGRAM)
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $<
clean:
$(RM) $(OBJECTS) $(PROGRAM)
0
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020
19 mai 2009 à 14:50
Ya personne pour m'aider.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
diaboly Messages postés 79 Date d'inscription dimanche 21 novembre 2004 Statut Membre Dernière intervention 10 février 2012 22
19 mai 2009 à 15:49
Je débute aussi.
Je peux te donner un site pour apprendre sans difficulté le c++
https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c
c'est vraiment très clair et très détaillé, tout est marqué.
0
diaboly Messages postés 79 Date d'inscription dimanche 21 novembre 2004 Statut Membre Dernière intervention 10 février 2012 22
19 mai 2009 à 15:54
#include <iostream.h>
using namespace std;

int main()
{
cout<<"Mon premier test"<<endl;

return 0;
} 



et pour compiler:
g++ "le_nom_de_ton_fichier.cpp" -o "le_nom_de_ton_fichier_sortie"
0
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020
19 mai 2009 à 15:56
Je viens de recevoir une information que pour cela marche je doit rajouter ça lors de la compilation: -l nombiblio.

J'ai essayé ça en faisant -lcogitant-5.2.0 mais ça n'as pas marché. Je sais pas c'est quoi exactement nombilio, est ce que c'est le nom de la bibliothèque utilisée ou quoi.

Quelqu'un connait quelque chose sur ça?
0
diaboly Messages postés 79 Date d'inscription dimanche 21 novembre 2004 Statut Membre Dernière intervention 10 février 2012 22
19 mai 2009 à 15:57
"nombiblio" doit surement vouloir dire "nom de la bibliothèque utilisée" comme tu le dis
0
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020
19 mai 2009 à 16:16
Oui oui c avec un g++ c'était juste un oublie pas le gcc.

Pour le nom de la biblioyhèque j'ai essayé mais ça na pas marché. Il manque quelque chose que je doit faire mais je sais pas c'est quoi!!!!!!!!
Et merci pour le site je vais le consulter et il va surment m'aider parce que je suis dans mes premiers pas.
0
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020
19 mai 2009 à 16:28
Merci pour toi diaboly, c'est bon cela marche très bien, en fait il faut utiliser -l nom de la biblithèque, je me suis trompé dans ce nom, je doit mettre le nom qui apparait à l'interieur du repertoire include de la librairie.
0
diaboly Messages postés 79 Date d'inscription dimanche 21 novembre 2004 Statut Membre Dernière intervention 10 février 2012 22
19 mai 2009 à 16:31
Peux tu donner le bon code pour que la compilation fonctionne stp?


oui, c'est un très bon site pour débuter de zero et il n'y a pas que des cours de c++ (php html et plein d'autres)
0
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020
19 mai 2009 à 20:05
Ok sans aucun problème.

En effet le code n'a pas changé c'est lors de la compilations tu tape:
c++ -c test.cpp
c++ -o test test.o -lcogitant //ici cogitant est le nom de la bibliothèque.

Merci
0
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020
19 mai 2009 à 20:08
J'ai oublié de spécifier qu'il faut supprimer le .h du iostream, tu écris seulement <iostream>.

Peux tu me dire que est ce que signifie les :: dans un code c++.
0
diaboly Messages postés 79 Date d'inscription dimanche 21 novembre 2004 Statut Membre Dernière intervention 10 février 2012 22
20 mai 2009 à 08:25
vas voir ici

http://www.siteduzero.com/tutoriel-3-11131-premier-programme-c-avec-cout-et-cin.html



Il y a deux mots-clé particuliers dans cette ligne : cout et endl. Vous noterez qu'ils ont tous les deux le préfixe std::
Tous les mots-clé de la librairie standard du C++ utilisent ce préfixe. Théoriquement, on est obligé de le mettre à chaque fois, mais c'est un peu lourd.
On a heureusement une solution pour se simplifier la vie.
0