Bonjour,
Je suis en Mandriva 2007
J'ecrit un petit truc en C (un seul fichier) que je compile avec gcc
(sans options, tout bete, quoi)
Dedans y'a:
#include <fcntl.h> (entre autres)
mais j'ai l'impression que le fichier inclu n'est pas
/usr/include/linux/fcntl.h
car:
#ifdef _LINUX_FCNTL_H
#error 1
#endif
ne provoque pas d'erreur
Je remets en question d'ailleurs tous mes #include <>
Comment se fait-il que, par defaut, les fichiers inclus ne soient pas
ceux de /usr/include/linux?
Comment changer ca ?
Un fichier dans /etc ?
Merci
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Luc.Habert.00__arjf
Zeyes :
Bonjour, Je suis en Mandriva 2007 J'ecrit un petit truc en C (un seul fichier) que je compile avec gcc (sans options, tout bete, quoi) Dedans y'a: #include <fcntl.h> (entre autres) mais j'ai l'impression que le fichier inclu n'est pas /usr/include/linux/fcntl.h
car: #ifdef _LINUX_FCNTL_H #error 1 #endif ne provoque pas d'erreur
Note au passage : pour voir quel fichier est inclus, tu peux faire un « gcc -E » dessus.
Je remets en question d'ailleurs tous mes #include <> Comment se fait-il que, par defaut, les fichiers inclus ne soient pas ceux de /usr/include/linux?
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui situé sous le répertoire linux.
Zeyes :
Bonjour,
Je suis en Mandriva 2007
J'ecrit un petit truc en C (un seul fichier) que je compile avec gcc
(sans options, tout bete, quoi)
Dedans y'a:
#include <fcntl.h> (entre autres)
mais j'ai l'impression que le fichier inclu n'est pas
/usr/include/linux/fcntl.h
car:
#ifdef _LINUX_FCNTL_H
#error 1
#endif
ne provoque pas d'erreur
Note au passage : pour voir quel fichier est inclus, tu peux faire un « gcc
-E » dessus.
Je remets en question d'ailleurs tous mes #include <>
Comment se fait-il que, par defaut, les fichiers inclus ne soient pas
ceux de /usr/include/linux?
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher
dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui
situé sous le répertoire linux.
Bonjour, Je suis en Mandriva 2007 J'ecrit un petit truc en C (un seul fichier) que je compile avec gcc (sans options, tout bete, quoi) Dedans y'a: #include <fcntl.h> (entre autres) mais j'ai l'impression que le fichier inclu n'est pas /usr/include/linux/fcntl.h
car: #ifdef _LINUX_FCNTL_H #error 1 #endif ne provoque pas d'erreur
Note au passage : pour voir quel fichier est inclus, tu peux faire un « gcc -E » dessus.
Je remets en question d'ailleurs tous mes #include <> Comment se fait-il que, par defaut, les fichiers inclus ne soient pas ceux de /usr/include/linux?
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui situé sous le répertoire linux.
Luc.Habert.00__arjf
Zeyes :
Bonjour, Je suis en Mandriva 2007 J'ecrit un petit truc en C (un seul fichier) que je compile avec gcc (sans options, tout bete, quoi) Dedans y'a: #include <fcntl.h> (entre autres) mais j'ai l'impression que le fichier inclu n'est pas /usr/include/linux/fcntl.h
car: #ifdef _LINUX_FCNTL_H #error 1 #endif ne provoque pas d'erreur
Note au passage : pour voir quel fichier est inclus, tu peux faire un « gcc -E » dessus.
Je remets en question d'ailleurs tous mes #include <> Comment se fait-il que, par defaut, les fichiers inclus ne soient pas ceux de /usr/include/linux?
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui situé sous le répertoire linux.
Mais a priori, c'est /usr/include/fcntl.h que tu veux inclure. Celui dans linux ne contient par exemple pas la déclaration de la fonction fcntl.
Zeyes :
Bonjour,
Je suis en Mandriva 2007
J'ecrit un petit truc en C (un seul fichier) que je compile avec gcc
(sans options, tout bete, quoi)
Dedans y'a:
#include <fcntl.h> (entre autres)
mais j'ai l'impression que le fichier inclu n'est pas
/usr/include/linux/fcntl.h
car:
#ifdef _LINUX_FCNTL_H
#error 1
#endif
ne provoque pas d'erreur
Note au passage : pour voir quel fichier est inclus, tu peux faire un « gcc
-E » dessus.
Je remets en question d'ailleurs tous mes #include <>
Comment se fait-il que, par defaut, les fichiers inclus ne soient pas
ceux de /usr/include/linux?
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher
dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui
situé sous le répertoire linux.
Mais a priori, c'est /usr/include/fcntl.h que tu veux inclure. Celui dans
linux ne contient par exemple pas la déclaration de la fonction fcntl.
Bonjour, Je suis en Mandriva 2007 J'ecrit un petit truc en C (un seul fichier) que je compile avec gcc (sans options, tout bete, quoi) Dedans y'a: #include <fcntl.h> (entre autres) mais j'ai l'impression que le fichier inclu n'est pas /usr/include/linux/fcntl.h
car: #ifdef _LINUX_FCNTL_H #error 1 #endif ne provoque pas d'erreur
Note au passage : pour voir quel fichier est inclus, tu peux faire un « gcc -E » dessus.
Je remets en question d'ailleurs tous mes #include <> Comment se fait-il que, par defaut, les fichiers inclus ne soient pas ceux de /usr/include/linux?
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui situé sous le répertoire linux.
Mais a priori, c'est /usr/include/fcntl.h que tu veux inclure. Celui dans linux ne contient par exemple pas la déclaration de la fonction fcntl.
Zeyes
Zeyes :
Bonjour, Je suis en Mandriva 2007 J'ecrit un petit truc en C (un seul fichier) que je compile avec gcc (sans options, tout bete, quoi) Dedans y'a: #include <fcntl.h> (entre autres) mais j'ai l'impression que le fichier inclu n'est pas /usr/include/linux/fcntl.h
car: #ifdef _LINUX_FCNTL_H #error 1 #endif ne provoque pas d'erreur
Note au passage : pour voir quel fichier est inclus, tu peux faire un « gcc -E » dessus. Merci: oulala
Je remets en question d'ailleurs tous mes #include <> Comment se fait-il que, par defaut, les fichiers inclus ne soient pas ceux de /usr/include/linux?
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui situé sous le répertoire linux.
Mais a priori, c'est /usr/include/fcntl.h que tu veux inclure. Celui dans linux ne contient par exemple pas la déclaration de la fonction fcntl. OK, tu as raison, finalement c'est pas ca le probleme
En fait, il me manque des symboles: F_NOTIFY et DN_MODIFY
et d'apres mon chemins d'includes, ils sont definis dans /usr/include/bits/fcntl.h mais y'a #ifdef __USE_GNU devant! Il doit me manquer un #include pour ca, parceque si je le definis au debut de mon source, il est "de-defini" quelquepart dans les includes Je pense qu'il faut peut-etre un truc plus subtil.
Zeyes :
Bonjour,
Je suis en Mandriva 2007
J'ecrit un petit truc en C (un seul fichier) que je compile avec gcc
(sans options, tout bete, quoi)
Dedans y'a:
#include <fcntl.h> (entre autres)
mais j'ai l'impression que le fichier inclu n'est pas
/usr/include/linux/fcntl.h
car:
#ifdef _LINUX_FCNTL_H
#error 1
#endif
ne provoque pas d'erreur
Note au passage : pour voir quel fichier est inclus, tu peux faire un « gcc
-E » dessus.
Merci: oulala
Je remets en question d'ailleurs tous mes #include <>
Comment se fait-il que, par defaut, les fichiers inclus ne soient pas
ceux de /usr/include/linux?
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher
dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui
situé sous le répertoire linux.
Mais a priori, c'est /usr/include/fcntl.h que tu veux inclure. Celui dans
linux ne contient par exemple pas la déclaration de la fonction fcntl.
OK, tu as raison, finalement c'est pas ca le probleme
En fait, il me manque des symboles:
F_NOTIFY
et
DN_MODIFY
et d'apres mon chemins d'includes, ils sont definis dans
/usr/include/bits/fcntl.h
mais y'a
#ifdef __USE_GNU
devant!
Il doit me manquer un #include pour ca, parceque si je le definis au
debut de mon source, il est "de-defini" quelquepart dans les includes
Je pense qu'il faut peut-etre un truc plus subtil.
Bonjour, Je suis en Mandriva 2007 J'ecrit un petit truc en C (un seul fichier) que je compile avec gcc (sans options, tout bete, quoi) Dedans y'a: #include <fcntl.h> (entre autres) mais j'ai l'impression que le fichier inclu n'est pas /usr/include/linux/fcntl.h
car: #ifdef _LINUX_FCNTL_H #error 1 #endif ne provoque pas d'erreur
Note au passage : pour voir quel fichier est inclus, tu peux faire un « gcc -E » dessus. Merci: oulala
Je remets en question d'ailleurs tous mes #include <> Comment se fait-il que, par defaut, les fichiers inclus ne soient pas ceux de /usr/include/linux?
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui situé sous le répertoire linux.
Mais a priori, c'est /usr/include/fcntl.h que tu veux inclure. Celui dans linux ne contient par exemple pas la déclaration de la fonction fcntl. OK, tu as raison, finalement c'est pas ca le probleme
En fait, il me manque des symboles: F_NOTIFY et DN_MODIFY
et d'apres mon chemins d'includes, ils sont definis dans /usr/include/bits/fcntl.h mais y'a #ifdef __USE_GNU devant! Il doit me manquer un #include pour ca, parceque si je le definis au debut de mon source, il est "de-defini" quelquepart dans les includes Je pense qu'il faut peut-etre un truc plus subtil.
Zeyes
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui situé sous le répertoire linux.
En fait, j'ai eu un probleme deja une fois avec les repertoires des
includes par defaut. Il s'agissait de gsm.h (qui est dans /usr/include/gsm/gsm.h mais le chemin /usr/include/gsm n'etait pas examine... (j'ai fait un bete lien pour eviter les futurs ennuis), mais je me demande ou ca se configure....
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher
dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui
situé sous le répertoire linux.
En fait, j'ai eu un probleme deja une fois avec les repertoires des
includes par defaut. Il s'agissait de gsm.h (qui est dans
/usr/include/gsm/gsm.h mais le chemin /usr/include/gsm n'etait pas
examine... (j'ai fait un bete lien pour eviter les futurs ennuis), mais
je me demande ou ca se configure....
C'est parfaitement normal. Si tu demandes « fcntl.h », il va le chercher dans /usr/include. Il faudrait demander « linux/fcntl.h » pour obtenir celui situé sous le répertoire linux.
En fait, j'ai eu un probleme deja une fois avec les repertoires des
includes par defaut. Il s'agissait de gsm.h (qui est dans /usr/include/gsm/gsm.h mais le chemin /usr/include/gsm n'etait pas examine... (j'ai fait un bete lien pour eviter les futurs ennuis), mais je me demande ou ca se configure....
Luc.Habert.00__arjf
Zeyes :
En fait, j'ai eu un probleme deja une fois avec les repertoires des includes par defaut. Il s'agissait de gsm.h (qui est dans /usr/include/gsm/gsm.h mais le chemin /usr/include/gsm n'etait pas examine... (j'ai fait un bete lien pour eviter les futurs ennuis), mais
Je t'ai déjà dit qu'il fallait faire
#include<gsm/gsm.h>
et non pas :
#include<gsm.h>
.
je me demande ou ca se configure....
Maintenant, si tu y tiens, tu peux faire un « gcc -dumpsecs » pour récupérer les specs de ton gcc, le modifier comme qu'il faut (je ne sais pas si il y a de la doc, mais ça s'intuite pas trop mal), et ensuite utiliser l'option « -specs » de gcc pour lui faire utiliser ces specs modifiées.
Zeyes :
En fait, j'ai eu un probleme deja une fois avec les repertoires des
includes par defaut. Il s'agissait de gsm.h (qui est dans
/usr/include/gsm/gsm.h mais le chemin /usr/include/gsm n'etait pas
examine... (j'ai fait un bete lien pour eviter les futurs ennuis), mais
Je t'ai déjà dit qu'il fallait faire
#include<gsm/gsm.h>
et non pas :
#include<gsm.h>
.
je me demande ou ca se configure....
Maintenant, si tu y tiens, tu peux faire un « gcc -dumpsecs » pour récupérer
les specs de ton gcc, le modifier comme qu'il faut (je ne sais pas si il y a
de la doc, mais ça s'intuite pas trop mal), et ensuite utiliser l'option
« -specs » de gcc pour lui faire utiliser ces specs modifiées.
En fait, j'ai eu un probleme deja une fois avec les repertoires des includes par defaut. Il s'agissait de gsm.h (qui est dans /usr/include/gsm/gsm.h mais le chemin /usr/include/gsm n'etait pas examine... (j'ai fait un bete lien pour eviter les futurs ennuis), mais
Je t'ai déjà dit qu'il fallait faire
#include<gsm/gsm.h>
et non pas :
#include<gsm.h>
.
je me demande ou ca se configure....
Maintenant, si tu y tiens, tu peux faire un « gcc -dumpsecs » pour récupérer les specs de ton gcc, le modifier comme qu'il faut (je ne sais pas si il y a de la doc, mais ça s'intuite pas trop mal), et ensuite utiliser l'option « -specs » de gcc pour lui faire utiliser ces specs modifiées.
Zeyes
Zeyes :
En fait, j'ai eu un probleme deja une fois avec les repertoires des includes par defaut. Il s'agissait de gsm.h (qui est dans /usr/include/gsm/gsm.h mais le chemin /usr/include/gsm n'etait pas examine... (j'ai fait un bete lien pour eviter les futurs ennuis), mais
Je t'ai déjà dit qu'il fallait faire
#include<gsm/gsm.h>
et non pas :
#include<gsm.h>
ah mais la c'etait ffmpeg .... pas moi! avec .configure etc...
je me demande ou ca se configure....
Maintenant, si tu y tiens, tu peux faire un « gcc -dumpsecs » pour récupérer les specs de ton gcc, le modifier comme qu'il faut (je ne sais pas si il y a de la doc, mais ça s'intuite pas trop mal), et ensuite utiliser l'option « -specs » de gcc pour lui faire utiliser ces specs modifiées.
Merci je vais voir... j'aurais pense un /etc Y'a bien /etc/ld.so.conf pour les libs....
Zeyes :
En fait, j'ai eu un probleme deja une fois avec les repertoires des
includes par defaut. Il s'agissait de gsm.h (qui est dans
/usr/include/gsm/gsm.h mais le chemin /usr/include/gsm n'etait pas
examine... (j'ai fait un bete lien pour eviter les futurs ennuis), mais
Je t'ai déjà dit qu'il fallait faire
#include<gsm/gsm.h>
et non pas :
#include<gsm.h>
ah mais la c'etait ffmpeg .... pas moi!
avec .configure etc...
je me demande ou ca se configure....
Maintenant, si tu y tiens, tu peux faire un « gcc -dumpsecs » pour récupérer
les specs de ton gcc, le modifier comme qu'il faut (je ne sais pas si il y a
de la doc, mais ça s'intuite pas trop mal), et ensuite utiliser l'option
« -specs » de gcc pour lui faire utiliser ces specs modifiées.
Merci je vais voir... j'aurais pense un /etc
Y'a bien /etc/ld.so.conf pour les libs....
En fait, j'ai eu un probleme deja une fois avec les repertoires des includes par defaut. Il s'agissait de gsm.h (qui est dans /usr/include/gsm/gsm.h mais le chemin /usr/include/gsm n'etait pas examine... (j'ai fait un bete lien pour eviter les futurs ennuis), mais
Je t'ai déjà dit qu'il fallait faire
#include<gsm/gsm.h>
et non pas :
#include<gsm.h>
ah mais la c'etait ffmpeg .... pas moi! avec .configure etc...
je me demande ou ca se configure....
Maintenant, si tu y tiens, tu peux faire un « gcc -dumpsecs » pour récupérer les specs de ton gcc, le modifier comme qu'il faut (je ne sais pas si il y a de la doc, mais ça s'intuite pas trop mal), et ensuite utiliser l'option « -specs » de gcc pour lui faire utiliser ces specs modifiées.
Merci je vais voir... j'aurais pense un /etc Y'a bien /etc/ld.so.conf pour les libs....
Luc.Habert.00__arjf
Zeyes :
ah mais la c'etait ffmpeg .... pas moi! avec .configure etc...
Mouarf. Ce que je fais dans ces cas-là, c'est intercaler au-dessus de gcc un wrapper qui appelle le vrai gcc en rajoutant des options (-I pour un répertoire d'include).
Y'a bien /etc/ld.so.conf pour les libs....
Oui et non. Ça défini les répertoires où les libs dynamiques requises par un programme sont recherchées lorsque le lance. C'est indépendant des répertoires où le compilateur va chercher les libs lorsqu'il crée le programme (ça aussi, c'est géré par les specs de gcc, ou par l'option -L).
Zeyes :
ah mais la c'etait ffmpeg .... pas moi!
avec .configure etc...
Mouarf. Ce que je fais dans ces cas-là, c'est intercaler au-dessus de gcc un
wrapper qui appelle le vrai gcc en rajoutant des options (-I pour un
répertoire d'include).
Y'a bien /etc/ld.so.conf pour les libs....
Oui et non. Ça défini les répertoires où les libs dynamiques requises par un
programme sont recherchées lorsque le lance. C'est indépendant des
répertoires où le compilateur va chercher les libs lorsqu'il crée le
programme (ça aussi, c'est géré par les specs de gcc, ou par l'option -L).
ah mais la c'etait ffmpeg .... pas moi! avec .configure etc...
Mouarf. Ce que je fais dans ces cas-là, c'est intercaler au-dessus de gcc un wrapper qui appelle le vrai gcc en rajoutant des options (-I pour un répertoire d'include).
Y'a bien /etc/ld.so.conf pour les libs....
Oui et non. Ça défini les répertoires où les libs dynamiques requises par un programme sont recherchées lorsque le lance. C'est indépendant des répertoires où le compilateur va chercher les libs lorsqu'il crée le programme (ça aussi, c'est géré par les specs de gcc, ou par l'option -L).
Zeyes
Zeyes :
ah mais la c'etait ffmpeg .... pas moi! avec .configure etc...
Mouarf. Ce que je fais dans ces cas-là, c'est intercaler au-dessus de gcc un wrapper qui appelle le vrai gcc en rajoutant des options (-I pour un répertoire d'include).
J'avais essaye de modifier les CFLAGS justement pour ajouter -I mais j'ai pas reussi a trouver le bon... alors le lien a ete le plus rapide.
Y'a bien /etc/ld.so.conf pour les libs....
Oui et non. Ça défini les répertoires où les libs dynamiques requises par un programme sont recherchées lorsque le lance. C'est indépendant des répertoires où le compilateur va chercher les libs lorsqu'il crée le programme (ça aussi, c'est géré par les specs de gcc, ou par l'option -L). Sur google, il y a deja eu cette question... sans reponse
Au fait, sinon, il faut definir
-D_GNU_SOURCE
pour avoir __USE_GNU Marrant: c'est pas par defaut...... et -D__USE_GNU est de-defini, je ne sais pas ou... (avec d'autres flags, j'ai un warning)
Zeyes :
ah mais la c'etait ffmpeg .... pas moi!
avec .configure etc...
Mouarf. Ce que je fais dans ces cas-là, c'est intercaler au-dessus de gcc un
wrapper qui appelle le vrai gcc en rajoutant des options (-I pour un
répertoire d'include).
J'avais essaye de modifier les CFLAGS justement pour ajouter -I
mais j'ai pas reussi a trouver le bon... alors le lien a ete le plus rapide.
Y'a bien /etc/ld.so.conf pour les libs....
Oui et non. Ça défini les répertoires où les libs dynamiques requises par un
programme sont recherchées lorsque le lance. C'est indépendant des
répertoires où le compilateur va chercher les libs lorsqu'il crée le
programme (ça aussi, c'est géré par les specs de gcc, ou par l'option -L).
Sur google, il y a deja eu cette question... sans reponse
Au fait, sinon, il faut definir
-D_GNU_SOURCE
pour avoir __USE_GNU
Marrant: c'est pas par defaut...... et -D__USE_GNU est de-defini, je ne
sais pas ou... (avec d'autres flags, j'ai un warning)
ah mais la c'etait ffmpeg .... pas moi! avec .configure etc...
Mouarf. Ce que je fais dans ces cas-là, c'est intercaler au-dessus de gcc un wrapper qui appelle le vrai gcc en rajoutant des options (-I pour un répertoire d'include).
J'avais essaye de modifier les CFLAGS justement pour ajouter -I mais j'ai pas reussi a trouver le bon... alors le lien a ete le plus rapide.
Y'a bien /etc/ld.so.conf pour les libs....
Oui et non. Ça défini les répertoires où les libs dynamiques requises par un programme sont recherchées lorsque le lance. C'est indépendant des répertoires où le compilateur va chercher les libs lorsqu'il crée le programme (ça aussi, c'est géré par les specs de gcc, ou par l'option -L). Sur google, il y a deja eu cette question... sans reponse
Au fait, sinon, il faut definir
-D_GNU_SOURCE
pour avoir __USE_GNU Marrant: c'est pas par defaut...... et -D__USE_GNU est de-defini, je ne sais pas ou... (avec d'autres flags, j'ai un warning)