IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

compilation sous linux OK, comment compiler sous windows ?


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut compilation sous linux OK, comment compiler sous windows ?
    Bonjour, je suis totalement débutant en c++ et je sèche depuis deux semaines sur le problème suivant :

    On m'a donné les sources d'un programme c++ sur lequel j'aimerais faire des tests. Ce programme compile sans problème sous Ubuntu avec un simple make (dixit un ami) (juste besoin de boost et de la STL). Sauf que je ne peux pas travailler sous linux. Un code c++ compilable sous linux est-il toujours portable sous windows ?

    J'aimerais compiler ce programme pour générer un exécutable windows. Je ne veux pas utiliser cygwin. Est-ce que si je compile avec mingw ça va marcher ? (je n'ai pas réussi à l'installer avec une version de gcc récente et la version de gcc de l'installeur est un peu vieille).


    Merci par avance,
    Cordialement,

  2. #2
    Membre habitué Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Points : 151
    Points
    151
    Par défaut
    GCC est une collection de logiciels libres intégrés capables de compiler divers langages de programmation GCC= GNU Compiler Collection. qu'il faut distinguer de la compilateur gcc compilateur du c,
    g++ compilateur du c++....
    donc si tu fait du c++ et que t'a installé Mingw tu peux utiliser g++ sans problème sous window.
    mais si tu as juste le compilateur gcc tu ne pourra pas faire c++ il y a de grosses différences

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Benoit_T Voir le message
    Bonjour, je suis totalement débutant en c++ et je sèche depuis deux semaines sur le problème suivant :

    On m'a donné les sources d'un programme c++ sur lequel j'aimerais faire des tests. Ce programme compile sans problème sous Ubuntu avec un simple make (dixit un ami) (juste besoin de boost et de la STL). Sauf que je ne peux pas travailler sous linux. Un code c++ compilable sous linux est-il toujours portable sous windows ?
    Réponse de normand : oui et non. Si le code a été écrit de façon portable avec des bibliothèques disponibles sur les 2 plateformes, alors en théorie tu devrais t'en sortir. Si le code s'appuie sur des spécificités linux, alors il faudra porter ces parties de code.
    Citation Envoyé par Benoit_T Voir le message
    J'aimerais compiler ce programme pour générer un exécutable windows. Je ne veux pas utiliser cygwin. Est-ce que si je compile avec mingw ça va marcher ? (je n'ai pas réussi à l'installer avec une version de gcc récente et la version de gcc de l'installeur est un peu vieille).
    Oui. Compiler avec mingw ne devrait pas poser de problème. Tu peux aussi utiliser Visual Express. Enfin, un petit tour sur la page outils te donnera les différentes possibilités. Je te conseille aussi d'utiliser un IDE (Code::Bock, Visual Express ou tout autre) mais c'est un simple point de vue.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Merci pour ces précisions. Je pense que le projet ne tire pas parti des spécificités Linux. Il s'agit en fait uniquement d'algorithmes sans interface graphique (les paramètres dont le fichier d'entrée sont précisés en arguments). Le seul code incompatible que je dois modifier est lié à getopt qui récupère les arguments sous unix.

    En fait le programme utilise les librairies boost et la STL. Cependant, j'ai essayé d'importer le code sous Visual c++ Express 2008 et la compilation me renvoie tout plein d'erreur...

    Je suis un peu perdu. Si vous en avez le temps, pourriez-vous essayer d'importer le dit projet sous Visual Express ou essayer une compilation avec minGw car là je sèche completement ...



    Cordialement,

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Précises déjà les cinq premières erreurs. Ensuite, c'est souvent très lié.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Voici entre autre le genre d'erreurs que j'obtiens:



    si j'enlève le fichier many.cpp, j'obtiens encore d'autres erreurs...

    Le getOpt ne sont pas reconnu par mingw à priori (spécifique à linux) mais le reste est normalement compilable pour windows ... je ne comprends pas bien la nature des erreurs en plus ...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Bon, j'arrive maintenant à compiler en ayant modifié les portions de code avec getOpt et en ayant corrigé certains trucs qui passaient pas (ushort en unsigned short). Maintenant ça compile mais j'ai plein d'erreurs à l'exécution .

    J'utilise la dernière version de code::block mais la version du compilo g++ avec gcc me semble un peu vieille ...

    Je vais corrigé certains trucs et je risque de vous faire signe pour le reste. Est-il possible que la version de mingw avec Code::block pose problème?
    Puis-je mettre à jour le compilateur de mingw intégré à code::block ?

    cordialement,

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Voici le début des erreurs que j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Compiling: ..\..\ch\contraction-hierarchies\main.cpp
    Linking console executable: bin\Debug\distt.exe
    obj\Debug\ch\contraction-hierarchies\main.o: In function `main':
    C:/Documents and Settings/Benoît/Bureau/ch/contraction-hierarchies/main.cpp:24: multiple definition of `_main'
    obj\Debug\main.o:C:/Documents and Settings/Benoît/Bureau/distBlock/distt/main.cpp:6: first defined here
    obj\Debug\ch\contraction-hierarchies\main.o: In function `_ZN5boost9iostreams5flushISiEEbRT_':
    C:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/boost/iostreams/close.hpp:(.bss+0x0): multiple definition of `_counter'
    obj\Debug\ch\contraction-hierarchies\many\manyToMany.o:C:/Documents and Settings/Benoît/Bureau/ch/contraction-hierarchies/many/../stats/counter.h:(.bss+0x0): first defined here
    obj\Debug\ch\contraction-hierarchies\main.o: In function `_Z16removeDuplicatesRSt6vectorI12CompleteEdgeSaIS0_EES3_':
    C:/Documents and Settings/Benoît/Bureau/ch/contraction-hierarchies/command/../io/createGraph.h:85: multiple definition of `Weight::MAX_VALUE'
    obj\Debug\ch\contraction-hierarchies\many\manyToMany.o:C:/Documents and Settings/Benoît/Bureau/ch/contraction-hierarchies/many/manyToMany.cpp:81: first defined here
    obj\Debug\ch\contraction-hierarchies\main.o: In function `main':
    C:/Documents and Settings/Benoît/Bureau/ch/contraction-hierarchies/main.cpp:37: undefined reference to `Argument::mode'
    C:/Documents and Settings/Benoît/Bureau/ch/contraction-hierarchies/main.cpp:44: undefined reference to `Argument::mode'
    obj\Debug\ch\contraction-hierarchies\main.o: In function `_ZN5boost9iostreams5flushISiEEbRT_':
    C:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/boost/iostreams/close.hpp:(.text$_ZN8Argument7setModeEi[Argument::setMode(int)]+0x7): undefined reference to `Argument::mode'
    obj\Debug\ch\contraction-hierarchies\main.o: In function `_Z16removeDuplicatesRSt6vectorI12CompleteEdgeSaIS0_EES3_':
    C:/Documents and Settings/Benoît/Bureau/ch/contraction-hierarchies/command/../io/createGraph.h:114: undefined reference to `OrdreSommetArgs::f'
    C:/Documents and Settings/Benoît/Bureau/ch/contraction-hierarchies/command/../io/createGraph.h:115: undefined reference to `OrdreSommetArgs::f'
    C:/Documents and Settings/Benoît/Bureau/ch/contraction-hierarchies/command/../io/createGraph.h:115: undefined reference to `OrdreSommetArgs::o'
    C:/Documents and Settings/Benoît/Bureau/ch/contraction-hierarchies/command/../io/createGraph.h:117: undefined reference to `OrdreSommetArgs::o'   ....
    Voici le code correspondant. Par rapport au code d'origine, j'ai juste rajouté des classes où j'entre les arguments qui auparavant étaient géré avec getOpt et j'ai renommé les méthodes main (sauf celle de la classe main) c ar il y en avaient plusieurs dans le programme) par le nom launch.



    Je suis complètement perdu avec les messages d'erreurs...

    Cela peut-il venir du fait que sous code::block je n'utilise pas les makefile livrés avec les sources ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    J'ai réussi à résoudre mes soucis ... , merci tout de même pour vos réponses.

    Cordialement,
    Benoît

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/02/2013, 13h24
  2. compilation de gcc 4.7.1 sous Linux
    Par ptyxs dans le forum GCC
    Réponses: 3
    Dernier message: 07/07/2012, 16h57
  3. Compilation avec GCC 4.4.5 sous Linux x86_64
    Par ruddy32 dans le forum QxOrm
    Réponses: 3
    Dernier message: 07/06/2011, 15h32
  4. [Installation] Serveur SVN sous linux, stockage du dépôt sous Windows
    Par gk14fire dans le forum Subversion
    Réponses: 1
    Dernier message: 20/12/2006, 07h26
  5. Réponses: 4
    Dernier message: 27/08/2003, 21h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo