如何构建Linux模块
来源:互联网 发布:c语言联合与结构的使用 编辑:程序博客网 时间:2024/05/15 01:28
如何构建Linux模块
http://blog.sina.com.cn/s/blog_520ff7d50100k30u.html 原文
Sourcecode:
Hello.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
}
static void hello_exit(void)
{
}
module_init(hello_init);
module_exit(hello_exit);
Makefile
obj-m :=hello.o
K_DIR = $(shell uname -r)
PWD = $(shell pwd)
all:
clean:
如果模块有多个文件,可以这样写
obj-m :=scull.o
scull-objs := main.o pipe.o access.o
将生成scull.ko模块
模块安装:insmod hello.ko
显示已装载的模块:lsmod
模块卸载:rmmod hello
编译环境fedro9 kernel 2.6.25-14.fc9.i686
安装内核源码包:
rpm –Uvh kernel-2.6.25-14.fc9.i686.src.rpm
这个命令将 RPM 内容写到路径 /usr/src/redhat/SOURCE
我把代码2.6.25解到/usr/src/kernels/2.6.25-14.fc9.i686下,这和我的模块编译用的Makefile有关。
可能遇到的问题
1.出现很多编译错误
到kernel所在目录执行make prepare/ make config,这是没有配置好源码树的原因。可能还需要KBUILD
2.错误提示: /bin/sh: scripts/mod/modpost: No such file ordirectory
出现这样的错误,说明scripts下没有生成相应的文件MODPOST,cd到kernel所在目录,执行: makescripts
3.安装时失败,提示invalid moduleformat,多是因为编译依据的内核与操作系统不一致(装载时会做很多检查,比如是否支持SMP,这些都是通过makeconfig设置的,也可以将/boot/config-2.6.25-14.fc9.i686拷贝到内核源代码目录下如/usr/src/kernels/2.6.25-14.fc9.i686),首先要保证内核与操作系统一致。
然后,需要修改kernel源代码根目录下的Makefile
EXTRAVERSION = -14.fc9.i686 (这个值根据uname –r的返回结果修改,我的为2.6.25-14.fc9.i686)
4.如果没有看到打印信息可以到文件/var/log/messages中去找
- 如何构建Linux模块
- 如何利用Maven构建多模块项目
- 基于Linux的复杂网络模块构建
- linux 驱动开发-模块的构建
- 构建模块
- Linux 如何新增驱动模块
- Windows下如何构建和发布Python模块
- Windows下如何构建和发布Python模块
- Windows下如何构建和发布Python模块
- [linux内核编程入门].1.1.构建自己的内核模块
- [linux内核编程入门].1.1.构建自己的内核模块
- Linux驱动入门——构建和运行模块
- 如何构建自己的 Linux 发行版
- 如何构建Android 1.5 Linux内核映像
- Linux 内核是如何构建的
- LINUX是如何make驱动程序模块的
- LINUX是如何make驱动程序模块的?
- 如何在LINUX内核中添加模块
- 绘制FastMM内存分配流程图(小块内存分配)
- 2014-8-15 精确随机掉落
- Android:Animator and Animation
- hibernate预编译SQL语句中的setParameter和setParameterList
- Struts 学习笔记
- 如何构建Linux模块
- 找工作期间看到的一些题目及解答
- 巨额广告费难救业绩 名牌酒企续亏
- SPI知识简介
- PE格式一
- 什么是IIS
- 【Java】JVM, JRE,JDK 的区别
- String,StringBuffer与StringBuilder
- ”饥饿营销“过度对品牌造成伤害