2009-07-31 6 views
0

J'essaye de compiler le paquet de programmation d'AC (thc-ipv6-0.7) sur Linux Redhat 2.6.9-42.ELsmp et il se plaint qu'il ne peut pas trouver "linux/string.h" . De google, j'ai appris que cela fait partie du paquet "kernel-headers".Linux redhat kernel-headers

Si je fais "rpm -qa | grep kernel"

Il montre que "kernel-devel" est installé (que je pense que je dois), mais pas "kernel-têtes". Un "find/-name string.h" révèle string.h est en fait sur le système, dans de nombreux endroits, y compris "/ usr/include".

J'ai essayé d'ajouter "-I/usr/include" au fichier make, mais j'ai eu la même erreur.

Ma question est, ai-je besoin d'installer "kernel-headers", et si oui, où puis-je le trouver, et quelle version?

+0

Avez-vous essayé "yum installer headers-noyau"? –

+0

J'ai essayé que, en fait. Mais miam n'a pas été installé, IIRC. –

Répondre

2

Normalement, vous devez installer la version de ces en-têtes correspondant à la version du noyau exécutée par le système sur lequel vous allez exécuter le programme. Dans votre cas, vous voulez exécuter localement, 2.6.9-42.

Le message se plaint de "linux/string.h" et non de "string.h", vous devez donc ajouter un répertoire ayant linux comme sous-répertoire. Je ne connais pas assez bien redhat pour savoir comment les installer (probablement une commande rpm) et où ils seront installés (avec Debian et ses dérivés, vous devez utiliser -I/usr/src/linux- kernel version/include ").

+0

bon point sur "partie linux" La source fait spécifiquement pour cela: –

+0

linux/string.h est complètement différent de votre autre chaîne.h, la première est pour les fonctions de chaîne utilisées par le noyau, la dernière est pour les fonctions de chaîne fournies par la bibliothèque standard C. –

+0

Ouais! travaillé! J'ai trouvé /linux/string.h dans un répertoire nommé /usr/src/kernels/2.6.9-42.EL-smp-i686/include/. Quand je l'ai mis dans le makefile, il a été compilé. Merci beaucoup! –