erreur: stdio.h: Aucun fichier ou répertoire d'erreur durant la phase d'
Je suis en train de compiler le programme suivant dans Ubuntu. Mais je reçois l'erreur: "stdio.h: Aucun fichier ou répertoire" erreur.
#include <stdio.h>
int main(void)
{
printf("Hello world");
}
Mon makefile est:
obj-m += hello.o
all:
make -I/usr/include -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Est qu'un moyen valable pour inclure des choses? Essayez
Vous pouvez compiler sans faire? par exemple,
Êtes-vous en train de construire un module du noyau linux, ou tout simplement un espace utilisateur de l'application?
Oui. Je suis en train de construire pour un module du noyau linux.
#include <stdio.h>
Vous pouvez compiler sans faire? par exemple,
gcc -o hello hello.c
?Êtes-vous en train de construire un module du noyau linux, ou tout simplement un espace utilisateur de l'application?
Oui. Je suis en train de construire pour un module du noyau linux.
OriginalL'auteur lash | 2013-03-27
Vous devez vous connecter pour publier un commentaire.
Votre façon de bâtir votre programme de la façon de construire le module du noyau et pas c programme d'application. et
stdio.h
n'existe pas dans l'environnement de développement du noyau c'est pourquoi vous obtenez le message d'erreur:1) Si vous voulez construire une application linux alors votre Makefile est faux:
Vous devez modifier votre fichier Makefile
Utiliser le Makefile suivant:
2) Si vous voulez construire un module du noyau puis votre code c est faux
stdio.h
dans l'espace du noyau de développement. Itdoes pasexistent dans l'environnement de développement du noyau c'est pourquoi vous
obtenez le message d'erreur
main()
dans le module de noyau de code Cprintf()
dans le module de noyau de code CAu LIEU de l'aide
stdio.h
, vous devez utiliser les éléments suivants incluentAu LIEU de l'aide
int main() {
, vous devez utiliserAu LIEU de l'aide
printf()
utilisationprintk()
Utilisation suivantes bonjour module au lieu de votre bonjour code
Veuillez vous reporter à la lien pour plus de détails sur le module du noyau de développement
à la recherche pour le code c. le code c est un code pour une application et non pas pour le module, car il contient le
main()
c'est pourquoi je suppose que l'utilisateur dispose d'écrire un mauvais makefilemais, selon son dernier commentaire il veulent construire un module noyau linux et pas linux application
Merci à vous, ne le savais pas.
OriginalL'auteur MOHAMED
Le problème est que vous ne pouvez pas utiliser
printf()
etstdio.h
à l'intérieur du noyau, et que vous n'utilisez pas unmain()
fonction. Vous avez besoinprintk()
etmodule.h
Vous devriez également avoir une
exit()
/cleanup()
type de fonction quand il décharge.Puis charge les fonctions du module:
Voir ici pour une similaires question qui pourrait vous aider, en général, vous ne pouvez pas utiliser n'importe quel utilisateur de l'espace des fonctions de la bibliothèque dans le noyau (n stdio.h, stdlib.h, etc)
OriginalL'auteur Mike
Votre Makefile n'est pas correct, veuillez jeter un oeil à l'un des nombreux tutoriels, par exemple: http://mrbook.org/tutorials/make/
le plus simple Makefile pour construire une application autonome devrait ressembler à quelque chose comme ça:
Espère que cela aide !
OriginalL'auteur Paul