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 :

programme écris sous windows, compilé sous linux


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut programme écris sous windows, compilé sous linux
    bonjour,
    voilà un problème d'ignare que je suis.
    J'ai les codes sources d'un programme fait sous windows et qui fonctionne sous windows (un bête programme en C qui lis un fichier pour faire des calculs dessus, et que j'utilise au cours de ma thèse).
    Je suis super intéressé par le fait de le faire tourner sous linux, mais lorsque je le compile comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o AnalMS nr.c sidna.c spalloc.c spinout.c spmain.c sputil.c
    j'ai une longue liste de warnings avec quelques erreurs, je pense qu'il s'agit de 2 ou 3 bricoles mais je ne suis pas du tout informaticien, j'ai juste des notions de bases :

    gcc -o AnalMS nr.c sidna.c spalloc.c spinout.c spmain.c sputil.c
    spinout.c: In function ‘get_dataset’:
    spinout.c:214: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:218: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:238: warning: incompatible implicit declaration of built-in function ‘strcpy’
    spinout.c:239: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:249: warning: incompatible implicit declaration of built-in function ‘strcpy’
    spinout.c:250: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:254: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c: In function ‘get_dataset_bug’:
    spinout.c:365: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:369: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:389: warning: incompatible implicit declaration of built-in function ‘strcpy’
    spinout.c:390: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:400: warning: incompatible implicit declaration of built-in function ‘strcpy’
    spinout.c:401: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:405: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c: At top level:
    spinout.c:414: error: conflicting types for ‘get_dataset_old’
    spmain.h:265: note: previous declaration of ‘get_dataset_old’ was here
    spinout.c: In function ‘get_dataset_old’:
    spinout.c:459: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:463: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:483: warning: incompatible implicit declaration of built-in function ‘strcpy’
    spinout.c:484: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:494: warning: incompatible implicit declaration of built-in function ‘strcpy’
    spinout.c:495: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c:499: warning: incompatible implicit declaration of built-in function ‘strncpy’
    spinout.c: In function ‘get_dataset_old_old’:
    spinout.c:541: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘char (*)[10000]’
    spinout.c:545: warning: incompatible implicit declaration of built-in function ‘strcpy’
    spinout.c:549: warning: incompatible implicit declaration of built-in function ‘strcpy’
    spinout.c:567: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘char (*)[10000]’
    spinout.c:592: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘char (*)[10000]’
    spinout.c: In function ‘get_initial_conditions_dynamics’:
    spinout.c:644: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘int’
    spinout.c:743: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘int’
    spmain.c:10:20: error: direct.h: Aucun fichier ou dossier de ce type
    spmain.c: In function ‘main’:
    spmain.c:36: error: ‘_MAX_PATH’ undeclared (first use in this function)
    spmain.c:36: error: (Each undeclared identifier is reported only once
    spmain.c:36: error: for each function it appears in.)
    spmain.c:130: warning: comparison between pointer and integer
    spmain.c:312: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long int’
    spmain.c:320: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long int’
    spmain.c:331: warning: format ‘%03d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:333: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:342: warning: format ‘%03d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:343: warning: format ‘%03d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:344: warning: format ‘%03d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:373: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:390: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:395: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long int’
    si quelqu'un a une idée de comment décoincer cette étape, ça serait un grand pas pour une petite thèse....

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Bonjour.

    Ajoute en tête du fichier spinout.c. Ça devrait t'en faire disparaître un certain nombre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    Bonjour Obsidian et merci pour l'info,
    en rajoutant ça change en effet le résultat de la compilation et donne :

    gcc -o AnalMS nr.c sidna.c spalloc.c spinout.c spmain.c sputil.c
    spinout.c:415: error: conflicting types for ‘get_dataset_old’
    spmain.h:265: note: previous declaration of ‘get_dataset_old’ was here
    spinout.c: In function ‘get_dataset_old_old’:
    spinout.c:542: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘char (*)[10000]’
    spinout.c:568: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘char (*)[10000]’
    spinout.c:593: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘char (*)[10000]’
    spinout.c: In function ‘get_initial_conditions_dynamics’:
    spinout.c:645: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘int’
    spinout.c:744: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘int’
    spmain.c:10:20: error: direct.h: Aucun fichier ou dossier de ce type
    spmain.c: In function ‘main’:
    spmain.c:36: error: ‘_MAX_PATH’ undeclared (first use in this function)
    spmain.c:36: error: (Each undeclared identifier is reported only once
    spmain.c:36: error: for each function it appears in.)
    spmain.c:130: warning: comparison between pointer and integer
    spmain.c:312: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long int’
    spmain.c:320: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long int’
    spmain.c:331: warning: format ‘%03d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:333: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:342: warning: format ‘%03d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:343: warning: format ‘%03d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:344: warning: format ‘%03d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:373: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:390: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long int’
    spmain.c:395: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long int’
    Comme j'ai l'impression qu'il y a des fonctions utilisées par windows mais qui ne sont peut être pas présentes, je commence à douter du niveau de facilité, alors ma question n'est pas "qu'est ce que je dois faire pour que ça marche", mais plutot "c'est grave docteur?".
    merci encore

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    La plupart des warnings sont liés à printf/scanf et montrent un désaccord entre le format %... et l'argument associé. A revoir donc dans une doc ou un cours la question de ces formats.
    Cela fera déjà pas mal le ménage.

    Les autres messages, y compris celui-ci signale des erreurs.
    spmain.c:130: warning: comparison between pointer and integer
    A voir ensuite.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Rassure-toi, c'est normal. Ce dernier log est en fait un sous-ensemble du premier. Les fonctions strcpy() et autres sont définies dans la norme C, mais cela reste quand même des fonctions de la bibliothèque standard. Il faut donc inclure au préalable le fichier *.h qui les décrit, sinon le compilateur ne peut pas savoir a priori comment les utiliser, d'où la flopée de warnings qui est apparue sur un code pourtant correct.

    Ne te laisse pas impressionner par le volume de ton log. Il s'agit souvent d'erreurs en cascades, causées à chaque fois par les précédentes. Il faut donc lire les premières lignes pour comprendre de quoi il s'agit.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    manquait juste quelques library à déclarer, et maintenant ça marche !
    merci encore

  7. #7
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut
    Citation Envoyé par mycaweb Voir le message
    manquait juste quelques library à déclarer, et maintenant ça marche !
    merci encore
    Et quelles sont ces librairies ?

Discussions similaires

  1. Compilation sous windows mais pas sous linux
    Par p1a2t3 dans le forum Débuter
    Réponses: 1
    Dernier message: 14/10/2014, 18h25
  2. Réponses: 7
    Dernier message: 22/04/2013, 23h44
  3. Réponses: 0
    Dernier message: 04/08/2009, 18h46
  4. Réponses: 8
    Dernier message: 27/04/2009, 12h27
  5. [Lazarus] Compiler sous Windows pour Linux
    Par JoseF dans le forum Lazarus
    Réponses: 3
    Dernier message: 13/06/2007, 21h43

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