您的位置:首页 > 运维架构 > Linux

linux内核编译环境配置

2015-09-04 12:35 561 查看
linux内核编译环境配置

如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可。即是/lib/modules/`uname -r`/build -> /usr/src/kernels/`uname -r`指定。
在yum中,如果直接运行 yum install kernel-devel, 一般安装的开发包版本要高于所使用的内核版本,不能使用。要更改yum 的配置文件,禁掉yum自动寻找新版本的功能。
即是在/etc/yum.repos.d/fedora-updates.repo 中的[update*]有关的enable=1,全部改为0.
OK,yum install kernel-devel 即可。

还有其他方法,以下可供参考: http://home.lupaworld.com/home-space-uid-296848-do-blog-id-241587.html http://blog.csdn.net/iczyh/article/details/3564367

经典的hello word测试

////# cat hello.c

#include <linux/module.h>

#include <linux/kernel.h>

#include <linux/init.h>

static int __init hl_init( void )

{

printk("Hello,World! init\n");

return 0;

}

static void __exit hl_cleanup( void )

{

printk("Goodbye, World! cleanup\n");

}

module_init(hl_init);

module_exit(hl_cleanup);

MODULE_LICENSE("GPL");

经典的由单个c文件产生模块的Makefile。

# cat Makefile

obj-m += hello.o

CURRENT_PATH := $(shell pwd) #模块所在的当前路径

LINUX_KERNEL := $(shell uname -r) #Linux内核源代码的当前版本

LINUX_KERNEL_PATH := /usr/src/kernels/$(LINUX_KERNEL) #Linux内核源代码的绝对路径

all:

make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules #编译模块了

clean:

make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean #清理

编译

Make
就产生了hello.ko。


安装

insmod hello.ko


卸载

rmmod hello


查看log

dmesg



点击(此处)折叠或打开



................

[12238.051159] Hello,World! init

[12242.458122] Goodbye, World! cleanup


[]中的是时间戳。



OK了,这个环境算好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: