免费注册 查看新帖 |

Chinaunix

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

[内核模块] 肿么办?晚辈求解:fedroa中编译内核Hello模块出现的2种问题 ?肿么办 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-14 08:31 |只看该作者 |倒序浏览
本帖最后由 SCDXMOE 于 2013-04-14 21:30 编辑

大家好,我想请问一下 怎么样在fedroa中编译内核模块的 啊?

我的makefile文件不知道怎么搞 我以前在centos rhel ubutun都做过

fedroa是有些奇怪:其中的 makfile文件 不好写 我的是
fedroa17   内核是3.8.4-
1 第一种makefile
makefile文件如下:

obj-m +=moutcp_cubic.o
CURRENT_PATH :=$(shell pwd)
LINUX_KERNEL :=$(shell uname -r)
LINUX_KERNEL_PATH :=/usr/src/kernels/$(LINUX_KERNEL)
#LINUX_KERNEL_PATH := /lib/modules/$(LINUX_KERNEL)/build
all:
    make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
clean:
    make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean



编译之后出现:

[root@localhost moutcp_cubic]# make
make -C /usr/src/kernels/3.8.4-102.fc17.i686.PAE M=/usr/lib/modules/3.8.4-102.fc17.i686.PAE/kernel/moutcp_cubic modules
make: *** /usr/src/kernels/3.8.4-102.fc17.i686.PAE: No such file or directory. Stop
make: *** [all] Error 2

2.第二种makefile文件
-------------------------------------------------------------------
obj-m +=moutcp_cubic.o
CURRENT_PATH :=$(shell pwd)
LINUX_KERNEL :=$(shell uname -r)
#LINUX_KERNEL_PATH :=/usr/src/kernels/$(LINUX_KERNEL)
LINUX_KERNEL_PATH := /lib/modules/$(LINUX_KERNEL)/kernel
all:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
clean:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean

出现错误:
[root@localhost moutcp_cubic]# make
make -C /lib/modules/3.8.4-102.fc17.i686.PAE/kernel M=/usr/lib/modules/3.8.4-102.fc17.i686.PAE/kernel/moutcp_cubic modules
make[1]: 进入目录usr/lib/modules/3.8.4-102.fc17.i686.PAE/kernel
make[1]: *** 没有规则创建modules停止
make[1]: 离开目录usr/lib/modules/3.8.4-102.fc17.i686.PAE/kernel
make: *** [all] 错误2

[root@localhost moutcp_cubic]#

我在网上收索了一个类是的情况 http://mazd1002.blog.163.com/blog/static/66574965201081003019207/ 但是还是没有解决

这样的错误 这该怎么解决呢 谢谢

期待各位的的指点回复 急 再次谢谢


论坛徽章:
0
2 [报告]
发表于 2013-04-14 08:53 |只看该作者
编译模块时-C选项是指定内核源码树位置,内核源码树需要包括.config,module.deps,system.map等文件,这些文件会在编译内核时生成,原生系统的话源码树位置在/lib/modules/($uname -r)/build目录下,这是个链接,会指向当前内核的源码树位置。
从你的现象来看,你的内核源码树位置没有找到,fedora的环境配置不了解,建议:
1. 查看当前内核的源码树位置,并正确指定
2. 如果找不到,可以重新编译安装一个内核,指向新内核的源码树编译ko
安装新内核之类的方法,可以百度

论坛徽章:
0
3 [报告]
发表于 2013-04-14 16:30 |只看该作者
本帖最后由 SCDXMOE 于 2013-04-14 20:23 编辑

怎么办???肿么办??


论坛徽章:
0
4 [报告]
发表于 2013-04-14 20:25 |只看该作者
回复 2# junnyg


    您好 我根据您的建议改动了一些.... 还是不行的(改动之后 内核改了 3.8  在1楼我修改了帖子 麻烦你再帮我看看) 谢谢

论坛徽章:
0
5 [报告]
发表于 2013-04-14 21:32 |只看该作者
回复 2# junnyg


    您好 我改动了makfile文件之后出现不同的错误 你卡这个是怎么回事?

obj-m +=moutcp_cubic.o
CURRENT_PATH :=$(shell pwd)
LINUX_KERNEL :=$(shell uname -r)
#LINUX_KERNEL_PATH :=/usr/src/kernels/$(LINUX_KERNEL)
LINUX_KERNEL_PATH := /lib/modules/$(LINUX_KERNEL)/kernel
all:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
clean:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean

出现错误:
[root@localhost moutcp_cubic]# make
make -C /lib/modules/3.8.4-102.fc17.i686.PAE/kernel M=/usr/lib/modules/3.8.4-102.fc17.i686.PAE/kernel/moutcp_cubic modules
make[1]: 进入目录usr/lib/modules/3.8.4-102.fc17.i686.PAE/kernel
make[1]: *** 没有规则创建modules停止
make[1]: 离开目录usr/lib/modules/3.8.4-102.fc17.i686.PAE/kernel
make: *** [all] 错误2

论坛徽章:
0
6 [报告]
发表于 2013-04-14 21:38 |只看该作者
make -C /lib/modules/3.8.4-102.fc17.i686.PAE/kernel M=/usr/lib/modules/3.8.4-102.fc17.i686.PAE/kernel/moutcp_cubic modules
make[1]: 进入目录usr/lib/modules/3.8.4-102.fc17.i686.PAE/kernel
make[1]: *** 没有规则创建modules停止
make[1]: 离开目录usr/lib/modules/3.8.4-102.fc17.i686.PAE/kernel
make: *** [all] 错误2

“内核源码树需要包括.config,module.deps,system.map等文件,这些文件会在编译内核时生成”
你指定的位置应该只是内核源码位置,而不是编译ko所需要的源码树;如果你是在找不到fedora下安装的内核的源码树位置,你就在源码目录下执行
cp /boot/config-xxx .config(拷贝系统默认的config)
make clean && make all
make modules_install
make install
新安装一个内核再以这个内核启动,编译之后你会发现你的源码目录下已经多出我所说的那些文件了

论坛徽章:
0
7 [报告]
发表于 2013-04-19 15:52 |只看该作者
回复 6# junnyg


    您好 谢谢您的回复
原始的内核版本fedroa 17 linux-3.3.4 我用yum update kernel 之后内核是3.8.4 系统的中usr/src/kernel/中出现了3.8.4-102.fc17.i686
我ls -a发现里面有.config文件
make all出现错误....

??????

论坛徽章:
0
8 [报告]
发表于 2013-04-19 16:52 |只看该作者
LINUX_KERNEL_PATH := /lib/modules/$(LINUX_KERNEL)/build

论坛徽章:
0
9 [报告]
发表于 2013-04-19 16:55 |只看该作者
Makefile,我总是这样写的:

obj-m +=moutcp_cubic.o

all:
     make -C /lib/moudles/$(shell uname -r)/build M=$(PWD) modules
clean:
     make -C /lib/moudles/$(shell uname -r)/build M=$(PWD) clean

论坛徽章:
0
10 [报告]
发表于 2013-04-20 14:01 |只看该作者
回复 9# lovephy


    请问您是在fesroa上面写的吗?
我的好像是有些问题的..........

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP