linux 模块编译显示没有头文件
控制面板错误提示[yinlei@localhostshiyan2]$gcc-l/usr/src/kernels/2.6.32-431.11.2.el6.i686/incl...
控制面板错误提示
[yinlei@localhost shiyan2]$ gcc -l /usr/src/kernels/2.6.32-431.11.2.el6.i686/include/linux module.c -o main.exe
module.c:2:24: 错误:linux/init.h:没有那个文件或目录
module.c:3:26: 错误:linux/module.h:没有那个文件或目录
module.c:4: 错误:expected declaration specifiers or ‘...’ before string constant
module.c:4: 警告:数据定义时没有类型或存储类
module.c:6: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘hello_init’
module.c:12: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘hello_exit’
module.c:17: 警告:数据定义时没有类型或存储类
module.c:17: 警告:函数声明中出现形参名却未指定类型
module.c:18: 警告:数据定义时没有类型或存储类
module.c:18: 警告:函数声明中出现形参名却未指定类型
[yinlei@localhost shiyan2]$
程序代码如下:
#include<linux/kernel.h>
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int __init hello_init(void)
{
printk("Hello world/n");
return 0;
}
static void __exit hello_exit(void)
{
printk("Bye Corne/n");
}
module_init(hello_init);
module_exit(hello_exit);
~ 展开
[yinlei@localhost shiyan2]$ gcc -l /usr/src/kernels/2.6.32-431.11.2.el6.i686/include/linux module.c -o main.exe
module.c:2:24: 错误:linux/init.h:没有那个文件或目录
module.c:3:26: 错误:linux/module.h:没有那个文件或目录
module.c:4: 错误:expected declaration specifiers or ‘...’ before string constant
module.c:4: 警告:数据定义时没有类型或存储类
module.c:6: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘hello_init’
module.c:12: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘hello_exit’
module.c:17: 警告:数据定义时没有类型或存储类
module.c:17: 警告:函数声明中出现形参名却未指定类型
module.c:18: 警告:数据定义时没有类型或存储类
module.c:18: 警告:函数声明中出现形参名却未指定类型
[yinlei@localhost shiyan2]$
程序代码如下:
#include<linux/kernel.h>
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int __init hello_init(void)
{
printk("Hello world/n");
return 0;
}
static void __exit hello_exit(void)
{
printk("Bye Corne/n");
}
module_init(hello_init);
module_exit(hello_exit);
~ 展开
2个回答
2015-07-09 · 知道合伙人互联网行家
关注
展开全部
编写linux内核模块,需要自己编写Makefile,同时在Makefile里面制定自己的内核路径,这样才能处理提示没有头文件错误。
编译命令:
export PATH=$PATH:#编译工具链路径
export ARCH=#CPU类别(例如arm)
export CROSS_COMPILE=arm-none-linux-gnueabi-#(编译工具xx-gcc的前缀xx)
make -C #编译好的内核模块运行的Linux kernel内核源代码目录树 M=$`pwd` modules
Linux模块编译例子:
export PATH=$PATH:/usr/local/arm/4.2.2-eabi/usr/bin
#for Samsung s5pc100
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
make -C /home/wenxy/src/s5pc100/linux-2.6.35.5 M=$`pwd` modules
展开全部
试试 gcc -l /usr/src/kernels/2.6.32-431.11.2.el6.i686/include module.c -o main.exe
或者 gcc -l /usr/src/kernels/2.6.32-431.11.2.el6.i686 module.c -o main.exe
“linux/init.h:没有那个文件或目录”因为 编译指定要进linux目录
或者 gcc -l /usr/src/kernels/2.6.32-431.11.2.el6.i686 module.c -o main.exe
“linux/init.h:没有那个文件或目录”因为 编译指定要进linux目录
追问
我试了,没用的啊?
追答
当然了,除了缺少头文件 还有语法等错误,请检查含有“错误”的提示
如
“module.c:4: 错误:expected declaration specifiers or ‘...’ before string constant”
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询