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 :

_S_IFREG isn't known - version de compilateur ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut _S_IFREG isn't known - version de compilateur ?
    Bonjour,

    j'ai une macro _S_IFREG dans un vieux code (au moins 93/96) qui n'est pas reconnu par mon compilateur gcc-4.1.

    Est-ce que cela vous dit quelque chose à vous les vieux ?

    Si, oui, est-ce que ça peut venir d'une différence de compilateur (version surtout, mais peut-être flag de compilation etc...) ?

    Merci d'avance pour vos réponses

    Cordialement,


    PS : je viens de penser j'avais le même problème avec _S_IFDIR et je l'ai réglé en incluant fcntl.h qui était étrangement (le code a été fait par un expert) absent des fichiers inclus.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    et il n'y avait pas de ioctl inclus ?

    Mais un truc comme IF_DIR ça pourrait être aussi dans dirent.h, dans socket.h, et même dans certaines versions dans stdlib.h... ou ailleurs..

    Pour solutonner le flag de compil, regarde dans les répertoires d'include ans quel fichier cela se trouve et de quels flags c'est entouré..

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    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 487
    Par défaut
    Hello,

    Citation Envoyé par Kaamui Voir le message
    PS : je viens de penser j'avais le même problème avec _S_IFDIR et je l'ai réglé en incluant fcntl.h qui était étrangement (le code a été fait par un expert) absent des fichiers inclus.
    Il y a parfois des évolutions de ce type dans les standards : des choses optionnelles qui deviennent obligatoires, des choses dépréciées qui finissent par disparaître, ou alors des options en conflit entre SysV et BSD qui finissent par être redistribuées dans des fichiers *.h propres et activées que si la bonne feature macro a été définie au préalable.

    Mais ce qui reste le plus probable, c'est que fcntl.h ait été inclus jusque là par un autre fichier *.h qui en avait besoin mais qui n'avait rien à voir avec la fonction qui te manque. Le fait de l'inclure a rendu toutes les autres macros disponibles. Le programmeur étant habitué à les utiliser, il ne s'est pas étonné de pouvoir les utiliser. Si tu as retiré (même à juste titre) ce header ou s'il a tout simplement été réécrit dans une nouvelle version du système, ça suffit à provoquer ce genre d'erreur.

  4. #4
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Bonjour,

    Merci pour votre retour rapide, en effet après une recherche de _S_IFREG dans les headers standards, j'ai trouvé cette macro/son équivalent sous le nom de __S_IFREG, j'ai modifié le fichier source appelant, et cela a solutionné ce problème, pour m'ouvrir la porte à un autre problème, cette fois lié à une différence de compilateur pour sûr, pas seulement de flag...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /usr/bin/ld: invalid BFD target `+s'
    déjà ld, c'est quoi concrètement je n'arrive pas à comprendre son rôle dans la compilation, c'est le linker ? runtime library d'après google, mais je ne comprend pas de quoi il s'agit...

    ensuite, pour info, le code a été développé pour/sur HP UX, et il me semble que les machines HP UX ont leur propre compilateur :
    Version de compilateur : cc: HP aC++/ANSI C B3910B A.06.10 [Mar 22 2006]


    Du coup les options de compilations comme +s ou -Aa, +DD64 etc ou je ne sais quoi encore ne sont pas reconnues... et je n'arrive pas à fixer cette erreur liée à des environnements de travail différents ? vous savez comment je peux faire ? (sans acheter une HP UX (ni VM))


    EDIT : pour info, pour moi, IFREG était dans stat.h

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Kaamui Voir le message
    pas à comprendre son rôle dans la compilation, c'est le linker ?
    Oui.. Il suffit de faire "man ld".



    Citation Envoyé par Kaamui Voir le message
    Du coup les options de compilations comme +s ou -Aa,
    Celles-là marchent parfaitement...



    Citation Envoyé par Kaamui Voir le message
    +DD64
    Celle-là sans doute pas


    Citation Envoyé par Kaamui Voir le message
    etc ou je ne sais quoi encore ne sont pas reconnues... et je n'arrive pas à fixer cette erreur liée à des environnements de travail différents ? vous savez comment je peux faire ? (sans acheter une HP UX (ni VM))
    Euh... Sans doute en mettant le bon flag correspondant à la machine (-Dlinux ou -Dmips ou -D.. ). A voir en faisant "man gcc"..

    D'autre part, vraisemblablement un flag comme -DPOSIX, ou équivalent, peut-être -Dstrict-prototypes, plus -ansi, éventuellement -C89, -Wall,

    Mais tu tournes sur quoi aujourd'hui ??

  6. #6
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    En fait j'ai un poste XP sur lequel je lance une VM Debian5 épurée (y'avait pas d'interface graphique quand je l'ai installé, tout faire avec vi c'était vraiment c****t) pour faire compiler du code avec gcc-4.1 qui l'a été sous HP UX avec aC++ surement y'a une dizaine d'années...dans le cadre de mon travail je précise, je ne fais pas ça pour le plaisir

    mais pour ce qui est des flags :

    Celles-là marchent parfaitement...
    Oui je les vois dans le man en effet (et pourquoi je n'ai pas pensé au man pour ld, je ne sais pas ), mais du coup je m'interroge sur la signification de 'invalid BFD target'.

    Pour l'option s, -s/+s, quelle différence entre le + et le - ?

    et je viens de voir un truc surprenant... pas de manuel pour gcc... (alors que j'ai les versions 3.4, 4.1, 4.2, 4.3,...et j'ai un problème pour updater (could not resolved/problème d'index files...))


    PS : j'essaye les autres flags -mais je penses sans voir gcc qu'il doit s'agir de -Dlinux pour moi- et je vous tiens au courant, en attendant vos possibles éclaircissements sur ces options de compilation et sur l'invalid BFD target

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Kaamui Voir le message
    En fait j'ai un poste XP sur lequel je lance une VM Debian5 épurée (y'avait pas d'interface graphique quand je l'ai installé, tout faire avec vi c'était vraiment c****t) pour faire compiler du code avec gcc-4.1 qui l'a été sous HP UX avec aC++ surement y'a une dizaine d'années...dans le cadre de mon travail je précise, je ne fais pas ça pour le plaisir
    Avec cygwin tu peux avoir X11, et donc xemacs


    Citation Envoyé par Kaamui Voir le message
    Pour l'option s, -s/+s, quelle différence entre le + et le - ?
    A voir dans le man, mais j'aurais tendance à dire "aucune"

    Normalement, +S sort le code assembleur..

    En minuscule, et avec moins, je ne sais pas..


    Citation Envoyé par Kaamui Voir le message
    et je viens de voir un truc surprenant... pas de manuel pour gcc... (alors que j'ai les versions 3.4, 4.1, 4.2, 4.3,...et j'ai un problème pour updater (could not resolved/problème d'index files...))
    ça peut être dû (vraisemblblement) à ce que certaines distributuons fournissent l'équivalent en faisant "info gcc" et non "man"..

    Ou bien que les chemins par défaut des man pages ne sont pas complets, ou que les fichiers n'ont pas été téléchargés complètement..



    Citation Envoyé par Kaamui Voir le message
    PS : j'essaye les autres flags -mais je penses sans voir gcc qu'il doit s'agir de -Dlinux pour moi- et je vous tiens au courant, en attendant vos possibles éclaircissements sur ces options de compilation et sur l'invalid BFD target
    ça doit être que cette option n'est pas reconnue avec ce compilo..

    Ou bien que dans la ligne cela comprend comme une cible du linker.. à cuse d'une erreur de syntaxe avant ou quelque chose comme ça..

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/09/2012, 17h33
  2. [PIC Micro Pascal] Nouvelle version du compilateur PMP
    Par Alcatîz dans le forum Autres IDE
    Réponses: 20
    Dernier message: 27/01/2012, 19h09
  3. Réponses: 8
    Dernier message: 23/01/2008, 08h45
  4. Réponses: 2
    Dernier message: 21/03/2006, 15h42

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