“#include <asm/io.h>” causes “erreur: asm/io.h: Aucun fichier ou répertoire”
J'utilise gentoo et d'essayer de compiler un programme pour le contrôle des bits sur le port parallèle. Il a de cette ligne vers le haut de:
#include <asm/io.h>
Et quand j'essaie d'utiliser gcc sur elle, elle produit de cette sortie:
port.c:4:20: erreur: asm/io.h: Aucun fichier ou répertoire de
"localiser asm/io.h" yeilds (entre autres choses):
/usr/src/linux-2.6.32-gentoo/arch/x86/include/asm/io.h
J'ai donc le fichier d'en-tête, mais ce n'est pas à la trouver?
Pourquoi ça ne marche pas?
Il n'est pas dans votre chemin?
OriginalL'auteur marcusw | 2009-12-23
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr si vous êtes l'auteur du programme, ou vous êtes juste essayer de compiler un programme que vous avez reçu de quelqu'un, mais ressemble
#include <asm/io.h>
doit être remplacé par#include <sys/io.h>
. Voir les résultats de cette recherche de google pour plus d'informations.Heureux d'être de l'aide.
OriginalL'auteur Alok Singhal
Jamais utiliser le code/en-têtes, dans
/usr/include/asm
. Utiliser les en-têtes dans/usr/include/sys
à la place.Ce que vous faites en utilisant
/usr/include/asm/
est la construction de votre code à l'égard d'une révision des en-têtes du Noyau. C'est sujet à la casse lorsque les en-têtes du noyau changement. En les reliant à l'autre endroit, vous proposera un lien vers une forme plus stable de les en-têtes dans la glibc, qui permettra de consulter les en-têtes du noyau en tant que de besoin. C'est pourquoi il y a un grand complexe de#ifdef ... #endif
lignes truffé tous dans les en-têtes.Confiance en moi, tous les outils dont vous avez besoin pour bit-jouer avec les ports parallèles seront en
/usr/include/sys/io.h
, depuis probablement tous vous allez utiliser sont directementreadb()
etwriteb()
appels à la appropriée/dev/lpX
appareil.OriginalL'auteur Kumba
Vous devrez peut-être ajouter le chemin d'accès. Sur la gcc en ligne de commande:
OriginalL'auteur
essayer
où xyz est le fichier que vous tentez de compiler.
Elle indique au compilateur où chercher les fichiers.
Vous pouvez avoir beaucoup d'options-I si vos fichiers sont dans des endroits différents, comme ce
Voir ma réponse. Ressemble très ancien code, et en essayant de le faire fonctionner sur un noyau linux peut être un tas d'ennuis. Pouvez-vous me dire quel bibliothèque/code c'est?
Il est parcon, à partir de bigasterisk.com/projects/parallel. Alors qu'il s'agit d'un binaire sur le site, je ne veux pas l'utiliser parce que je veux être en mesure de personnaliser le programme en fonction de mes besoins. De toute façon, j'ai ajouté un lien symbolique à partir de ioctl.h à ioctl.h dans /usr/include/asm-generic, en plus d'un -I/usr/src/linux/include interrupteur sur la ligne de commande, et maintenant je suis à l'obtention d'un tas d'erreurs dans les io.h concernant les erreurs de syntaxe et des variables non définies. Peut-être que le lien n'était pas le bon fichier?
Comme je l'ai dit dans ma réponse, essayez de remplacer
asm/io.h
avecsys/io.h
. homebrewtechnology.blogspot.com/2009/03/... semble suggérer qu'il fonctionne.Aussi, vous ne pouvez pas simplement le lien du même nom des fichiers comme ceci et d'assumer cela fonctionne :-).
OriginalL'auteur Glen
Ajouter-I/usr/src/linux-2.6.32-gentoo/arch/x86/inclure à votre compiler en ligne de commande.
OriginalL'auteur bobmcn