原创 VMWare下编译hello.c模块编程记录

2009-1-14 20:59 3619 3 4 分类: MCU/ 嵌入式

总结了一个VMWare下内核程序hello.c的学习过程。


编写hello.c文件


#define MODULE
#include <linux/module.h>


int init_module(void)
{
printk("Hello,World!\n");
return 0;
}


void cleanup_module(void)
{
printk("Goodbye cruel world \n");
}


编译:


#gcc -c hello.c


#insmod ./hello.o


出现如下错误:


hello.o: kernel-module version mismatch
         hello.o was compiled for kernel version 2.4.20
        while this kernel is version 2.4.20-8.


原因:编译内核源代码版本和编译器版本不一致造成的。


有3中解决方式:


 1、打开/usr/include/linux/version.h文件,把#define UTS_RELEASE   "2.4.20"修改为#define UTS_RELEASE "2.4.20-8"。再用gcc重新编译。


 2、用insmod -f ./hello.o强制把hello文件加载到内核里。


 3、用vi /usr/scr/linux-2.4/include/linux/version.h中定义为2.4.20-8版本,用如下命令进行编译:gcc -c -I/usr/src/linux-2.4/include hello.c  再装载就可以了。


然而有出现了另一个问题:


   Warning: loading hello.o will taint the kernel: no license
  See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Module hello loaded, with warnings。


注册的问题,解决办法如下,用vim hello.c 再hello.c文件中添加MODULE_LICENSE("GPL");如下:


#define MODULE
#include <linux/module.h>


MODULE_LICENSE("GPL");


int init_module(void)
{
         printk("Hello World!\n");
        return 0;
}


void cleanup_module(void)
{
         printk("Goodbye!\n");
}


:wq   保存。


再用gcc -c编译hello.c文件,再insmod ./hello.o文件正常,然而还是没有printk的输出。然而可以用 命令:cat /proc/modules 查看到加载成功。


现在需要用执行 dmesg 命令就可以看到输出了。


                           huanan_(编)


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户385532 2009-1-21 08:27

补充,可以直接把printk的打印等级提高为:<0>
相关推荐阅读
用户385532 2015-09-28 10:44
剩余的光电开关 30元每套
 项目剩余的光电开关,30每套       邮费:12元(快递)      联系方式:  qq:306136554        手机:13654537437(最好...
用户385532 2015-09-28 10:42
自制的MSP430仿真器
          最近向自己想用MSP430单片机做点项目,便弄了一个430的仿真器,在IAR下运行稳定,手里还有多余的板子,现在向外出售28元一个, 根据TI公司原厂的 MSP430 ...
用户385532 2013-04-01 16:39
STM32 启动文件选择
  - startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices - startup_s...
用户385532 2013-03-12 10:15
安装Office2010出错“windows installer 服务不能更新一个或多个受保护的文件”,
安装环境:xp sp3 安装软件:office 2010 ,    在安装office 2010 之前,安装了vs2008,也没有解决这个问题。 解决方法如下:    在下面目录放...
用户385532 2011-09-03 15:07
QT 小实验--滑动条,LCD框等
编译环境:ubuntu 11.04    QT4 代码如下: #include <qapplication.h>#include <qpushbutton.h>#include...
用户385532 2011-07-22 16:54
arduino 视频车自动模式
舵机 编程运行 同翔电子 QQ:306136554 http://www.tongxiangdz.com http://shop33987716.taobao.com/...
EE直播间
更多
我要评论
1
3
关闭 站长推荐上一条 /3 下一条