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

  1. #1
    Membre expérimenté

    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
    Points : 1 418
    Points
    1 418
    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.
    Nullius in verba

  2. #2
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    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é..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    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 expérimenté

    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
    Points : 1 418
    Points
    1 418
    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
    Nullius in verba

  5. #5
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    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 ??
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #6
    Membre expérimenté

    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
    Points : 1 418
    Points
    1 418
    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
    Nullius in verba

  7. #7
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    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..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  8. #8
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    tiens,je t'ajoute les flags que j'ai, moi, en étant passé de HPUX à Linux

    (par contre, sur un 32 bits).

    C_FLAGS = -Wall -ansi -g -O2 -march=i386 -mcpu=i686 -DLINUX \
    -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_XOPEN_SOURCE \
    -D_BSD_SOURCE -D_SVID_SOURCE -DFUNCPROTO=15 -DNARROWPROTO
    (tourne sur RedHat, CentOS..)

    Il faut bien sûr rajouter les chemins d'include, éventuellement le flag de debug..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Membre expérimenté

    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
    Points : 1 418
    Points
    1 418
    Par défaut
    merci beaucoup souviron34.

    Quand tu dis que tu as adapté tes options de HP UX à Linux, tu l'as fait là, exprès pour ça ? Ou tu as déjà été confronté au cas de figure et tu t'es tiré les cheveux pendant un temps pour trouver par quoi remplacer chaque option ? (ou tu as une technique secrète ancestrale ? comme de savoir lire un manuel ? )

    Sinon comment t'as fais pour passer de HP UX à Linux ? (si je demande, c'est parce que si tu l'as fait virtuellement j'aimerais savoir si tu as trouvé une VM HP UX tournant sur un manager Windows). J'ai réussi à me procurer une VM (90 jours d'essai), mais je vois des .configure, sbin, var, opt,... (UNIX-style quoi ), même dans le vmmgr (manager de vm hp fourni par hp).

    Voilà si tu (ou quelqu'un d'autre) a plus d'info pour se procurer une VM HP UX tournant sur VM player par exemple, je suis preneur, car google (et le site HP) n'est pas très causant la dessus.

    je vais continuer, pour le plaisir d'essayer de faire tourner ce bouzin sur ma debian, avec tes options ça devrait aller mieux, mais étant dans le cadre du boulot, je me dirige inéluctablement vers l'obtention d'une VM HP UX

    (sauf si ma boite sort son portefeuille de son c** et m'achète une belle machine HP UX)
    Nullius in verba

  10. #10
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Kaamui Voir le message
    Quand tu dis que tu as adapté tes options de HP UX à Linux, tu l'as fait là, exprès pour ça ? Ou tu as déjà été confronté au cas de figure et tu t'es tiré les cheveux pendant un temps pour trouver par quoi remplacer chaque option ? (ou tu as une technique secrète ancestrale ? comme de savoir lire un manuel ? )

    Sinon comment t'as fais pour passer de HP UX à Linux ? [/SIZE]
    euh..

    Je travaillais dans un contexte où les softs développés étaient développés sur HPUX.

    Se sont rajoutées des Silicon Graphics, puis des PCs avec Linux. (au départ RedHat, puis CentOS).

    Lorsque cela était virtualisé sur PC, c'était l'inverse : les PCs fonctionnaient sous Linux, et Windows étaient virtualisé via VMWare..

    Et oui, on s'est tiré les cheveux : tout le service informatique, plus toute l'équipe de développement, suivant les applis.. (bon, y'en avait bien une centaine, critiques)

    Donc la "découverte" des flags indiqués ci-dessus (en particulier les "-DFUNCPROTO=15 -DNARROWPROTO -D_POSIX_C_SOURCE=199309L") a mis ..... un certain temps et beaucoup d'énergie
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  11. #11
    Membre expérimenté

    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
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    euh..

    Donc la "découverte" des flags indiqués ci-dessus (en particulier les "-DFUNCPROTO=15 -DNARROWPROTO -D_POSIX_C_SOURCE=199309L") a mis ..... un certain temps et beaucoup d'énergie
    ... et beaucoup de cheveux du coup

    En tout cas merci pour tes réponses, cela n'a pas réglé mes problèmes, mais à long terme cela m'en aura fait éviter d'autre, et cela m'a ouvert d'autres pistes.

    Très cordialement,
    Nullius in verba

+ 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