OVH Cloud OVH Cloud

byteorder et linux 2.6.9

2 réponses
Avatar
Kevin Denis
Bonjour,
j'ai un petit probleme avec le linux 2.6.9 pour compiler des programmes
(SDL et qemu au hasard).

Immanquablement je tombe sur des erreurs:
In file included from /usr/include/asm/byteorder.h:57,
from /usr/include/linux/cdrom.h:14,
from /usr/src/qemu-0.6.1/linux-user/syscall.c:61:
/usr/include/linux/byteorder/little_endian.h:43: error: erreur d'analyse syntaxi
que before "__cpu_to_le64p"
/usr/include/linux/byteorder/little_endian.h: Dans la fonction « __cpu_to_le64p
»:
/usr/include/linux/byteorder/little_endian.h:45: error: `__le64' undeclared (fir
st use in this function)
/usr/include/linux/byteorder/little_endian.h:45: error: (Each undeclared identif
ier is reported only once

etc.. sur une cinquantaine de lignes jusqu'a:
/usr/include/linux/byteorder/little_endian.h:89: error: `p' undeclared (first us
e in this function)
make[1]: *** [syscall.o] Erreur 1
make[1]: Leaving directory `/usr/src/qemu-0.6.1/i386-user'
make: *** [all] Erreur 1

J'ai regarde sur un linux 2.4.26 le fichier little_indian.h et ils sont
relativement different; sur le 2.4.26 je n'ai que des
#define blabla
alors que sur le 2.6.9 j'ai bien des #define mais aussi tout une serie
de:
static inline __le64 __cpu_to_le64p(const __u64 *p)
{
return (__force __le64)*p;
}

Ce changement intervient a la ligne 43, la ou gcc commence a cafouiller.

J'ai du mal a comprendre d'ou vient l'erreur:
du noyau? de la structure des .h qui a change? des programmes qui
ne l'ont pas pris en compte? de gcc (version 3.3.4)? Un autre probleme
qui n'a rien a voir?

Merci pour toute aide

PS: qemu (pour citer ce programme) compilait parfaitement avec le 2.6.7
qui lui, a un fichier little_endian.h qui correspond grosso-modo a celui
du 2.4.26
--
Kevin

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.

2 réponses

Avatar
Philippe Lebon
Kevin Denis wrote:

Bonjour,
j'ai un petit probleme avec le linux 2.6.9 pour compiler des programmes
(SDL et qemu au hasard).



J'ai eu le même problème. Si mes souvenirs sont bons, il faut lier
directement les includes du noyo vers les sources du noyau.

ln -sf /usr/src/linux/include/linux /usr/include/linux
ln -sf /usr/src/linux/include/asm /usr/include/asm

--
Phil.

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Kevin Denis
Le 22-11-2004, Philippe Lebon a écrit :

j'ai un petit probleme avec le linux 2.6.9 pour compiler des programmes
(SDL et qemu au hasard).



J'ai eu le même problème. Si mes souvenirs sont bons, il faut lier
directement les includes du noyo vers les sources du noyau.



oui, j'avais meme remarque que la slack n'avait pas ces liens dans sa
conf de base, et qu'il fallait les ecrire a la main.

ln -sf /usr/src/linux/include/linux /usr/include/linux
ln -sf /usr/src/linux/include/asm /usr/include/asm



Mais bon c'est deja fait depuis (houla, six mois?):
:~/Bureau$ ls -l /usr/include/linux /usr/include/asm
lrwxrwxrwx 1 root root 28 avr 3 2004 /usr/include/linux ->
/usr/src/linux/include/linux/
lrwxrwxrwx 1 root root 28 avr 3 2004 /usr/include/linux ->
/usr/src/linux/include/linux/
(et la meme chose pour asm-generic)

J'ai vu un post sur linux.kernel qui posait le meme probleme mais sans
reponse.
Je reprecise que pour le 2.6.7 tout va bien, mais que le 2.6.9 plantouille
grave (pas teste avec le 2.6.8, mais amha il suffit de voir la tete des
fichiers byteorder/*.h)

Comme il n'y a que ca qui differe, (meme gcc, meme programme a compiler) que
dans un cas ca marche et l'autre ca plante a la ligne ou le fichier
differe, ca me paraissait une bonne piste.
--
Kevin

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.