OVH Cloud OVH Cloud

Debian : Erreur lors de la compilation d'un nouveau module.

6 réponses
Avatar
Adrien Caillot
Bonjour,

J'ai une Sarge avec un noyau 2.4.27-2-386 et je voudrais faire
fonctionner un lecteur Iomega Rev sans devoir changer / compiler le noyau.

D'après cette page : http://iomrrdtools.sourceforge.net/#2.4.x , il
suffit d'appliquer un patch pour que cela fonctionne.

J'ai essayé d'exécuter le ./install mais cela ne fonctionne pas, alors
je tente les différentes étapes à la main, comme dans expliqué dans le
README.

Au moment de compiler le module rev, j'obtiens des erreurs :

------------

serveur#1:~/linux_2.4_rev_installer-beta-0.0.1/rev-0.0.1$ make
gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -O2 -DMODULE
-D__KERNEL__
-DSTOCK_KERNEL -isystem /lib/modules/`uname -r`//build/include -isystem
/lib/modules/`uname -r`//build/drivers -c -o rev_core.o rev_core.c
In file included from /usr/include/asm/system.h:5,
from /usr/include/asm/processor.h:18,
from /usr/include/asm/thread_info.h:13,
from /usr/include/linux/thread_info.h:21,
from /usr/include/linux/spinlock.h:19,
from /usr/include/linux/capability.h:45,
from /usr/include/linux/sched.h:7,
from /usr/include/linux/module.h:10,
from rev_core.c:23:
/usr/include/linux/kernel.h:72: error: syntax error before "size_t"
/usr/include/linux/kernel.h:74: error: syntax error before "size_t"

[...]

/usr/include/linux/time.h: In function `timespec_to_jiffies':
/usr/include/linux/time.h:198: error: dereferencing pointer to
incomplete type
/usr/include/linux/time.h:199: error: dereferencing pointer to
incomplete type

[...]

/usr/include/asm/mpspec.h:20: error: conflicting types for
`mp_bus_id_to_type'
/usr/include/asm/mpspec.h:8: error: previous declaration of
`mp_bus_id_to_type'
/usr/include/asm/mpspec.h:22: error: `MAX_IRQ_SOURCES' undeclared here
(not in a function)
/usr/include/asm/mpspec.h:24: error: `MAX_MP_BUSSES' undeclared here
(not in a function)

[...]

-----------------

Je n'ai pas tout recopié mais seulement quelques exemples
représentatifs. Je suppose que j'ai un problème avec des fichiers .h
mauvais, mais je n'ai pas d'idée précise et google n'a pas envie
d'être mon ami sur ce coup...

Le README précise ça aussi :

------------

Note that the Makefile may need to be changed for your system. Most
common changes include such things as adding the compiler switch
"-mcmodel=kernel" to the CFLAGS macro, including "-isystem
/usr/src/linux/drivers" to the INCLUDE macro or changing the linker
emulation from elf_i386 to one more appropriate for your system.

------------

Je ne sais pas si ça peut être lié mais j'avoue que je ne comprends pas
vraiment ce paragraphe.

Merci de m'aider si vous avez des idées, ou de me dire si je dois poster
d'autres informations qui pourraient être utiles.

6 réponses

Avatar
l'indien
On Fri, 01 Jul 2005 12:12:10 +0200, Adrien Caillot wrote:

Bonjour,

J'ai une Sarge avec un noyau 2.4.27-2-386 et je voudrais faire
fonctionner un lecteur Iomega Rev sans devoir changer / compiler le noyau.

D'après cette page : http://iomrrdtools.sourceforge.net/#2.4.x , il
suffit d'appliquer un patch pour que cela fonctionne.

J'ai essayé d'exécuter le ./install mais cela ne fonctionne pas, alors
je tente les différentes étapes à la main, comme dans expliqué dans le
README.

Au moment de compiler le module rev, j'obtiens des erreurs :

------------

serveur#1:~/linux_2.4_rev_installer-beta-0.0.1/rev-0.0.1$ make
gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -O2 -DMODULE
-D__KERNEL__
-DSTOCK_KERNEL -isystem /lib/modules/`uname -r`//build/include -isystem
/lib/modules/`uname -r`//build/drivers -c -o rev_core.o rev_core.c
In file included from /usr/include/asm/system.h:5,
from /usr/include/asm/processor.h:18,
from /usr/include/asm/thread_info.h:13,
from /usr/include/linux/thread_info.h:21,
from /usr/include/linux/spinlock.h:19,
from /usr/include/linux/capability.h:45,
from /usr/include/linux/sched.h:7,
from /usr/include/linux/module.h:10,
from rev_core.c:23:
/usr/include/linux/kernel.h:72: error: syntax error before "size_t"
/usr/include/linux/kernel.h:74: error: syntax error before "size_t"


Y-a-t'il bien un "#include <linux/config.h>" et un
"#include <linux/kernel.h>" avant le "#include <linux/modules.h>" ?
Je parierai que non...

[...]

Avatar
Adrien Caillot
l'indien wrote:


Y-a-t'il bien un "#include <linux/config.h>"


Non.

et un
"#include <linux/kernel.h>" avant le "#include <linux/modules.h>" ?


Il y est mais après le #include <linux/kernel.h>.
Ils devraient être là ?

On m'a fait remarquer à juste titre qu'il me manquait le paquet
kernel-headers-2.4.27-2-386. Maintenant, j'ai les erreurs suivantes :

--------------------

serveur#4:~/linux_2.4_rev_installer-beta-0.0.1/rev-0.0.1$ make
gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -O2 -DMODULE
-D__KERNEL__ -DSTOCK_KERNEL -isystem
/lib/modules/2.4.27-2-386/build/include -isystem
/lib/modules/2.4.27-2-386/build/drivers -c -o rev_core.o rev_core.c
rev_core.c:31:21: scsi/sr.h: No such file or directory
rev_core.c:32:24: scsi/hosts.h: No such file or directory
/lib/modules/2.4.27-2-386/build/include/asm/processor.h: In function
`copy_segments':
/lib/modules/2.4.27-2-386/build/include/asm/processor.h:433: warning:
unused parameter `p'
/lib/modules/2.4.27-2-386/build/include/asm/processor.h:433: warning:
unused parameter `mm'

----------------------

Je vais chercher la cause de ces "No such file or directory". Bien sûr,
si vous avez des idées, n'hésitez pas. :)

Avatar
Rakotomandimby (R12y) Mihamina
Adrien Caillot :

Je vais chercher la cause de ces "No such file or directory"


Fais un 'find' d'abord pour voir si il existe vraiment ou pas, et pour
savoir ou est-il.

--
Miroir de logiciels libres http://www.etud-orleans.fr
Développement de logiciels libres http://aspo.rktmb.org/activites/developpement
Infogerance de serveur dédié http://aspo.rktmb.org/activites/infogerance
(En louant les services de l'ASPO vous luttez contre la fracture numerique)

Avatar
Adrien Caillot
Rakotomandimby (R12y) Mihamina wrote:

Fais un 'find' d'abord pour voir si il existe vraiment ou pas, et pour
savoir ou est-il.


Je venais de le faire quand j'ai lu ton message. :)

find ne trouve aucun host.h, mais par contre il trouve ça :

/usr/src/kernel-source-2.4.27/include/scsi/scsi_host.h
/usr/src/kernel-headers-2.4.27-2/include/scsi/scsi_host.h

Il trouve aussi ça :

/usr/src/kernel-source-2.4.27/drivers/scsi/sr.h

Et dans le fichier rev_core.c que j'essaie de compiler je vois :

#include <scsi/sr.h>
#include <scsi/hosts.h>

Avatar
Rakotomandimby (R12y) Mihamina
Adrien Caillot :

find ne trouve aucun host.h, mais par contre il trouve ça :
/usr/src/kernel-source-2.4.27/include/scsi/scsi_host.h
/usr/src/kernel-headers-2.4.27-2/include/scsi/scsi_host.h


Tiens! kernel-sources ne contient pas les headers? il me semble que si.
Si tu as kernel-sources d'installé, tu peux virer kernel-headers.

Il trouve aussi ça :
/usr/src/kernel-source-2.4.27/drivers/scsi/sr.h
Et dans le fichier rev_core.c que j'essaie de compiler je vois :
#include <scsi/sr.h>
#include <scsi/hosts.h>


Donc, _pour moi_ la chose à faire c'est cd modifier la deuxième ligne,
faire un patch (et le commenter surtout), parcourir le "bugtracker" du
logiciel que tu veux installer (pour voir si ce sujet n'a pas déjà été
traité), et proposer le patch. Ca sera ta contribution aux logiciels
libres. :)

--
Miroir de logiciels libres http://www.etud-orleans.fr
Développement de logiciels libres http://aspo.rktmb.org/activites/developpement
Infogerance de serveur dédié http://aspo.rktmb.org/activites/infogerance
(En louant les services de l'ASPO vous luttez contre la fracture numerique)

Avatar
Adrien Caillot
Rakotomandimby (R12y) Mihamina wrote:

Tiens! kernel-sources ne contient pas les headers? il me semble que si.
Si tu as kernel-sources d'installé, tu peux virer kernel-headers.


C'est ce qu'il me semblait avoir lu et c'est pour ça que je ne l'avais
pas mis à la base, mais pourtant ça a marché avec alors que ça ne
marchait pas sans.


Donc, _pour moi_ la chose à faire c'est cd modifier la deuxième ligne,
faire un patch (et le commenter surtout), parcourir le "bugtracker" du
logiciel que tu veux installer (pour voir si ce sujet n'a pas déjà été
traité), et proposer le patch. Ca sera ta contribution aux logiciels
libres. :)



En fait ça ne sera pas nécessaire. J'ai édité le Makefile pour ajouter
-isystem /usr/src/linux/drivers dans la variable INCLUDE, comme
conseillé dans le README, et ça a marché (je précise que j'avais déjà
tenté ça avant d'installer kernel-headers et ça ne marchait pas.

Ensuite j'ai compilé... j'ai reçu un nombre de warnings assez important
mais au final, echo $? m'a répondu 0. Ensuite, le make, make install, et
la suite des opérations se sont bien passées, je peux maintenant écrire
sur mon REV, ce qui est plutôt bien pour un périphérique de
sauvegardes... :)

Ma contribution aux logiciels libres va plutôt consister à écrire un
HowTo sur le fonctionnement du Iomega Rev sous Debian avec un noyau
2.4.27-2-386.

Merci à tous ceux qui m'ont aidé.