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 :

Erreur compilation sous Linux


Sujet :

C++

  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Par défaut Erreur compilation sous Linux
    Bonjour,

    J'avais lros d'un précédent poste vaguement parlé de ce genre de problème lors de la compialtion.
    Mais j'ai développé un projet en C++ sur Windows 64bit sur Visual Studio, il fonctionne parfaitement bien, cependant, je l'ai récupérer pour le recompiler sous linux, un ubuntu sous codeblocks, et j'ai ce genre d'erreurs:

    Nom : error compilation codeblocks ubuntu.png
Affichages : 735
Taille : 67,5 Ko

    J'ai réussi à en corriger quelques unes, j'ai linké les librairies et dépendances mais j'ai des problèmes de ce genre, je me demande si ça ne peut pas venir du compilateur ou quoi.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 141
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Sans le code, cela sera difficile de voir ce qui bloque. Il semble qu'il y ai une erreur avant le #include <stdio.h>, cela peut notamment arriver lorsque l'on oublie un ';' en fin de déclaration de structure ou de classe (mais il y a d'autres cas aussi).
    Pour le #include "tchar.h", j'espère pour vous qu'il ne provient pas d'une bibliothèque purement Windows.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Par défaut
    Bonjour,

    Merci pour ta réponse LittleWhite.
    Dans l'ordre voilà les include tel qu'ils sont dans mon projet:


    Nom : include1.png
Affichages : 535
Taille : 23,7 Ko
    Nom : include2.png
Affichages : 523
Taille : 13,9 Ko

    Je me demandais si à des moments ça ne pouvais pas venir de lib qui causerait le problème, mais en soit je ne vois pas.

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Russie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 25
    Par défaut Bonjour,
    Bonjour,
    Qu'est-ce que cstdlib.h ?

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Par défaut
    Bonjour Elias,

    Pour le coup il ne sert plus à rien.
    Je l'ai enlevé.

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Russie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 25
    Par défaut
    Bonjour,
    Pourriez-vous copier ici qu'est-ce qui se trouve sur les lignes 151, 157, 163 dans votre /usr/include/stdlib.h ?

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,
    Citation Envoyé par EliasF00F Voir le message
    Bonjour,
    Pourriez-vous copier ici qu'est-ce qui se trouve sur les lignes 151, 157, 163 dans votre /usr/include/stdlib.h ?
    Ca, ca ne servira à rien : stdlib.h est un fichier d'en-tête spécifique à la bibliothèque standard du C (qu'il faudrait d'ailleurs remplacer par cstdlib en C++ )

    @eristof72 :

    Dans ton premier message, on voit à l'impression écrant qu'il y a un ascenceur vertical dans la liste des erreurs. Cela implique qu'il y a très certainement des erreurs bien avant celle que tu nous a présentées.

    Le problème est connu : il arrive régulièrement au compilateur de "perdre les pédales" après avoir été confronté à une première erreur, ce qui l'incite à nous "pourrir la vie" avec toute une série de "faux positifs" qui ne découlent que ... de sa perte de pédales.

    De prime abord, tu peux faire confiance aux développeur de la bibliothèque standard du C (vu que stdlib.h est un fichier d'en-tête fourni par eux) pour fournir des fichiers qui tiennent parfaitement la route, et qui ne contiennent absolument aucune erreur.

    Il faudrait donc remonter le log de compilation jusqu'à trouver la toute première erreur qui apparait dans un de tes fichiers à toi, car l'expérience démontre à loisir que le problème vient toujours de notre propre code

    Une fois que tu auras trouvé la toute première erreur (car il peut y avoir quelque avertissements avant qu'elle ne soit affichée), tu aura déjà fait un grand pas dans la résolution de ton problème

    NOTA : au lieu de t'em...der à créer des impressions écran, fais plutôt un copier / coller de ton code et des erreurs de compilation que tu obtiens, et utilise le bouton en forme de # qui se trouve au dessus de la zone d'édition du message pour en assurer une mise en forme correcte.

    Vu que tu utilises code::blocks, tu peux aisément copier le contenu des différents logs qui se trouvent en bas en faisant un clique droit sur n'importe quelle ligne de log, et en choisissant l'option "Copy contents to clipboard" .

    Cela facilitera la vie de tout le monde : la tienne parce que c'est quand même plus facile que de commencer à créer des images et à les transférer sur internet, et la notre, car nous pourrons à notre tour copier et coller le code et / ou le log de compilation chez nous, pour les étudier à notre aise
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Russie

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 25
    Par défaut Bonjour
    Bonjour,
    Et moi aussi, j'ai absolument confiance aux développeurs de la bibliothèque standard du C.
    D'un autre côté, on pourrait y voir qu'est-ce que le compilateur ne trouve pas.

  9. #9
    Membre très actif
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Par défaut
    Bonjour,



    au lieu de t'em...der à créer des impressions écran, fais plutôt un copier / coller de ton code
    Oui c'est ce que je comptais faire, mais je ne pouvais pas copier mon code ici, j'ai screen mon code depuis une VM, sur le moment je ne pouvais pas faire de copier coller alors qu'il devait être activé.

    @eristof72 :

    Dans ton premier message, on voit à l'impression écrant qu'il y a un ascenceur vertical dans la liste des erreurs. Cela implique qu'il y a très certainement des erreurs bien avant celle que tu nous a présentées.

    Le problème est connu : il arrive régulièrement au compilateur de "perdre les pédales" après avoir été confronté à une première erreur, ce qui l'incite à nous "pourrir la vie" avec toute une série de "faux positifs" qui ne découlent que ... de sa perte de pédales.
    La première erreur c'est cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /usr/include/wchar.h|564|error: missing binary operator before token "("
    Sans le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <tchar.h>
    J'ai 50 erreur et plus, avec, j'en ai plus que 22 .
    ça ne m'arrive bien qu'avec codeblocks sous linux, avec Visual Studio sous windows je n'ai pas cette erreur.

  10. #10
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Tu ne vas quand même pas me dire que, sur toutes ces erreurs, la seule qui soit issue d'un fichier, sur les 22 erreurs (ou sur les 50) que tu obtiens, qui soit proche de ton projet est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fatal error : tchar.h No such file or directory


    Note que cela se peut, car je ne suis pas sur du tout que ce fichier ne soit pas propre à windows

    Il se pourrait du coup que ce soit l'un des symboles préprocesseurs qui soit incorrectement défini (un -D_windows ou quelque chose du genre), ou incorrectement utilisé

    Ceci étant dit, en observant plus attentivement ton impression écran, je remarque quelques problèmes :
    • cstdlib.h n'existe pas : il faut inclure soit cstdlib (sans le .h, qui est la version C++ du fichier) soit stdlib.h (qui est la version C du fichier), avec une nette préférence pour cstdlib
    • stdio.h est un fichier d'en-tête issus du C, préfère utiliser cstdio (sans le .h, qui est la version C++ du fichier), si tu en as vraiment besoin
    • il en va de même pour les fichier string.h et time.h, auxquels on préférera respectivement les fichier cstring et ctime (sans le .h) si on en a vraiment besoin
    • memory.h me pose beaucoup plus de problèmes, car je ne suis pas sur du tout qu'il s'agisse d'un fichier issus de la bibliothèque stancard du C, étant donné qu'il n'y a pas de fichier correspondant cmemory. Or, il existe en C++ un fichier appelé memory (sans le .h) qui fournit les fonctionnalités relatives aux pointeurs intelligents et à la gestion dynamique de la mémoire. Ne serait-ce pas ce fichier dont tu aurais besoin

    Si j'étais toi, je commencerais déjà par supprimer l'inclusion de ces fichiers, en commentant l'ensemble du code, pour n'avoir une fonction main vide, et en me contentant d'inclure les fichiers issus de cpprest.

    Si un code proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <cpprest/filestream.h>
    #include <cpprest/streams.h>
    /* et tous les autres cpprest/XXX */
    int main(){
     
    }
    afin de voir si cela compile correctement (cela ne devrait normalement poser aucun problème).

    Une fois que cela compile, je décommenterais les instructions de la fonction main les une après les autres, en compilant à chaque fois, afin de déterminer, pour chaque instruction:
    1. si elle nécessite un fichier d'en-tête supplémentaire (et, lequel, le cas échéant)
    2. si l'inclusion de ce fichier d'en-tête pose problème.

    Ce ne sera qu'à partir de là que tu pourras te faire une idée "relativement précise" du problème

    D'un autre coté, je persiste et signe : si nous disposions de ton code complet (celui que tu as personnellement écrit pour le fichier dont tu nous montre l'impression écran), nous aurions surement plus facile à t'aider
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  11. #11
    Membre très actif
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Par défaut
    Bonjour,

    Merci pour vos réponses.
    J'ai déjà essayé en commentant tout le code, en enlevant les méthodes, ça continuait à buguer jusqu'au moment ou j'ai enlevé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include <iostream>
    #include <stdio.h>

    J'ai dû enlever tout les includes jusqu'au dernier pour que ça compile avec plus ou moins bien...

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

Discussions similaires

  1. Erreur lors de la compilation sous Linux
    Par lpa dans le forum PhysX et APEX
    Réponses: 15
    Dernier message: 14/10/2011, 17h10
  2. Comment gérer les erreurs de la compilation sous linux ?
    Par petitclem dans le forum Autres éditeurs
    Réponses: 15
    Dernier message: 01/08/2008, 15h53
  3. erreur a la compilation sous linux
    Par superC dans le forum wxWidgets
    Réponses: 40
    Dernier message: 10/03/2007, 12h54
  4. [mono] Compilation sous linux, erreur dans windows
    Par AlexandreP dans le forum Mono
    Réponses: 6
    Dernier message: 18/08/2006, 19h56
  5. erreur de compilation sous linux
    Par petdelascar dans le forum C
    Réponses: 11
    Dernier message: 21/12/2005, 20h10

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