免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3514 | 回复: 11
打印 上一主题 下一主题

编译内核3.2.10版本是出错了,请教高手怎么办。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-13 13:42 |只看该作者 |倒序浏览
再做一个大作业,涉及到内核编程的,使用ubuntu的版本貌似没有头文件包含了, 像linux/module.H 这样的头文件没有,网上搜一下后 发觉要自己编译内核
浴室兴匆匆去编译内核时遇到这个错误。。不知到怎么办了。 求高人打救。。、

CC      drivers/mfd/wm8994-core.o
drivers/mfd/wm8994-core.c: In function ‘wm8994_suspend’:
drivers/mfd/wm8994-core.c:260:20: error: ‘WM1811_JACKDET_MODE_MASK’ undeclared (first use in this function)
drivers/mfd/wm8994-core.c:260:20: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [drivers/mfd/wm8994-core.o] Error 1
make[1]: *** [drivers/mfd] Error 2
make: *** [drivers] Error 2

论坛徽章:
0
2 [报告]
发表于 2012-03-13 16:11 |只看该作者
再发点详细信息吧。
我的系统是 ubuntu 11.10 是3.0.0.16的内核
下载的是kernel.org 上stable的3.2.1 内核
gcc 是4.6的

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015年迎新春徽章
日期:2015-03-04 09:57:09
3 [报告]
发表于 2012-03-13 17:17 |只看该作者
你把你内核的.config复制过去然后用这个配置文件编译

论坛徽章:
0
4 [报告]
发表于 2012-03-13 18:36 |只看该作者
是boot里面的那个config-3.0.0.16-generic 文件吧 复制过去然后编译了一遍  官网上的3.2 和3.1都编译了,都没成功..

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015年迎新春徽章
日期:2015-03-04 09:57:09
5 [报告]
发表于 2012-03-14 09:01 |只看该作者
coconut-zj 发表于 2012-03-13 18:36
是boot里面的那个config-3.0.0.16-generic 文件吧 复制过去然后编译了一遍  官网上的3.2 和3.1都编译了,都 ...


把你的编译步骤和错误信息贴出来

论坛徽章:
0
6 [报告]
发表于 2012-03-14 09:39 |只看该作者
今天成功编译通过了! 再试了一遍3.1版本的。 编译成功安装后 编译自己的hello模块时引用头文件会出错:
khello.cpp:2:26: fatal error: linux/module.h: No such file or directory
这个头文件要怎么才能包含对呢?


我的makefile:
KERNEL_DIR :=/home/luna/Documents/linux-3.1.10
CC=g++
MODCFLAGS := -Wall -DMODULE -D__KERNEL__ -DLINUX
khello.o: khello.cpp /usr/include/linux/version.h
        $(CC) $(MODCFLAGS) -c khello.cpp
        echo insmod khello.o to turn it on
        echo rmmod khello to turn it off
        echo
        echo X and kernel programming do not mix
        echo Do the insmod and rmmod from outside X.

源文件khello.cpp

#include <linux/kernel.h>
#include <linux/module.h>
#if CONFIG_MODVERSIONS == 1
#define MODVERSIONS
#include <linux/modversions.h>
#endif

int init_module()
{
        printk("HELLO WORLD.");
return 0;
}

void cleanup_module()
{
        printk("module clean up\n");
}

直接下载了3.1.10版本的内核到Documents 文件夹下就编译了。 编译过程与这里的连接差不多:
http://blog.csdn.net/woshixingaaa/article/details/5993648
编译完成后 uname -r 是3.1.10的 这样应该是编译成功了吧

回复 5# dooros


   

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015年迎新春徽章
日期:2015-03-04 09:57:09
7 [报告]
发表于 2012-03-14 09:54 |只看该作者
coconut-zj 发表于 2012-03-14 09:39
今天成功编译通过了! 再试了一遍3.1版本的。 编译成功安装后 编译自己的hello模块时引用头文件会出错:
k ...


你在哪抄的代码?这么不规范……
还有,怎么这么喜欢用c++?

makefile:
ifneq ($(KERNELRELEASE),)
     obj-m := hello.o
else
     KERNELDIR ?= /home/luna/Documents/linux-3.1.10
     PWD := $(shell pwd)
default:
     $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif

hello.c
#include <linux/kernel.h>
#include <linux/module.h>

static int init_module()
{
        printk("HELLO WORLD.");
        return 0;
}

static void cleanup_module()
{
        printk("module clean up\n");
}

module_init(init_module);
module_exit(cleanup_module);

论坛徽章:
0
8 [报告]
发表于 2012-03-15 10:42 |只看该作者
回复 7# dooros

谢谢高人指点!
再请教一个问题: 内核编程有没有比较好的书推荐呢? 网上的资料好散好散  
我主要是要涉及到netfilter方面的。   

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015年迎新春徽章
日期:2015-03-04 09:57:09
9 [报告]
发表于 2012-03-15 10:59 |只看该作者
coconut-zj 发表于 2012-03-15 10:42
回复 7# dooros

谢谢高人指点!


Linux Device Driver

论坛徽章:
0
10 [报告]
发表于 2012-03-18 12:27 |只看该作者
coconut-zj 发表于 2012-03-13 13:42
再做一个大作业,涉及到内核编程的,使用ubuntu的版本貌似没有头文件包含了, 像linux/module.H 这样的头文 ...

楼主是怎么解决的呢???
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP