ubuntu下helloworld内核模块编译

1.hello.c

#include<linux/init.h>

#include<linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");

MODULE_AUTHOR("MDAXIA");

static int __init hello_init(void)

{

printk(KERN_ALERT "Hello world!\n");

return 0;

}

static void __exit hello_exit(void)

{

printk(KERN_ALERT "Goodbye,cruel world!");

}

module_init(hello_init);

module_exit(hello_exit);

2.Makefile

ifeq ($(KERNELRELEASE),)

KDIR := /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

modules:

$(MAKE) -C $(KDIR) M=$(PWD) modules

modules_install:

$(MAKE) -C $(KDIR) M=$(PWD) modules_install

clean:

rm -rf *.o *.ko .depend *.mod.o *.mod.c Module.* modules.*

.PHONY:modules modules_install clean

else

obj-m :=hello.o

endif

3. 编译模块

#sudo make    (调用第一个命令default)

这时,在hello.c 所在文件夹就会有 hello.ko ,这个就是我们需要的内核模块啦

#sudo make clean

清理编译垃圾,hello.ko 也会清理掉。

4. 插入模块,让其工作。注意必须是root权限

#sudo insmod ./hello.ko

我们用dmesg 就可以看到 产生的内核信息啦,Hello world!

如果没有输出"hello from hello world",因为如果你在字符终端而不是终端模拟器下运行的话,就会输出,因为在终端模拟器下时会把内核消息输出到日志文件/var/log/kern.log中。

#sudo rmmod ./hello

再用dmesg 可以看到 Bye world!

modutils是管理内核模块的一个软件包。可以在任何获得内核源代码的地方获取Modutils(modutils-x.y.z.tar.gz)源代码,然后选择最高级别的patch.x.y.z等于或小于当前的内核版本,安装后在/sbin目录下就会有insomod、rmmod、ksyms、lsmod、modprobe等实用程序。当然,通常我们在加载Linux内核时,modutils已经被载入。

1.Insmod命令

调用insmod程序把需要插入的模块以目标代码的形式插入到内核中。在插入的时候,insmod自动调用init_module()函数运行。注意,只有超级用户才能使用这个命令,其命令格式为:

# insmod  [path] modulename.ko

2. rmmod命令

调用rmmod程序将已经插入内核的模块从内核中移出,rmmod会自动运行cleanup_module()函数,其命令格式为:

#rmmod  [path] modulename.ko

3.lsmod命令

调用lsmod程序将显示当前系统中正在使用的模块信息。实际上这个程序的功能就是读取/proc文件系统中的文件/proc/modules中的信息,其命令格式为:

#lsmod

4.ksyms命令

ksyms这个程序用来显示内核符号和模块符号表的信息。与lsmod相似,它的功能是读取/proc文件系统中的另一个文件/proc/kallsyms。(最后这一步没实验出来)

时间: 2024-12-18 09:03:42

ubuntu下helloworld内核模块编译的相关文章

Ubuntu下android studio 编译报错A problem occurred starting process &#39;command &#39;/Android/Sdk/build-tools/21.1.2/aapt&#39;&#39;

此问题在stack  over flow 上找到答案. 原链接地址:http://stackoverflow.com/questions/27589844/android-studio-1-0-2-not-building-appmergedebugresources-error 解决方法: //在终端分别运行下面两条指令,安装lib32stdc++6 和lib32z1 sudo apt-get install lib32stdc++6 sudo apt-get install lib32z1

「android」Ubuntu下android studio 编译报错A problem occurred starting process &#39;command &#39;/Android/Sdk/build-tools/21.1.2/aapt&#39;&#39;(转)

转自”http://www.cnblogs.com/jonzone/p/5246531.html“ 此问题在stack  over flow 上找到答案. 原链接地址:http://stackoverflow.com/questions/27589844/android-studio-1-0-2-not-building-appmergedebugresources-error 解决方法: //在终端分别运行下面两条指令,安装lib32stdc++6 和lib32z1 sudo apt-get

ubuntu下android反编译

最近在研究android的逆向工程,看到网上有不少的教程在反编译android源码,但是大多数都是在windows平台下做的.今天,我将简单介绍ubuntu下反编译android源码. 一.工具介绍 1.反编译源码工具: dex2jar:将apk包中的classes.dex文件反编译成jar包. jd-gui:将编译好的jar包用该软件打开直接显示为java源码. 2.打包.签名等工具 apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看,也就是俗称的解包和打包. sign-m

ffmpeg2.2在ubuntu下使用NDK编译——并在android工程下测试使用

作者:wainiwann 出处:http://www.cnblogs.com/wainiwann/ 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 摘要:本文主要介绍将FFmpeg音视频编解码库移植到Android平台上的编译和基本测试过程. 环境准备: Ubuntu12.04 TLS android-ndk-r9d-linux-x86_64.tar.bz2 ffmpeg2.2 --------------------

ubuntu下code::blocks编译运行一个简单的gtk+2.0项目

在具体的操作之前,首先需要安装一些必要的软件.ubuntu下默认安装了gcc,不过缺少必要的Header file,可以在命令行中输入下面的指令安装build-essential套件:sudo apt-get install build-essential使用GTK+2.0需要安装GTK开发套件,在命令行中输入下面的指令安装GTK开发套件libgtk2.0-dev:sudo apt-get install libgtk2.0-dev安装完成后,可以使用pkg-config查看一下GTK的相关编译

ubuntu下objective-c的编译和运行

ubuntu 下编译objective-c 1.安装编译环境 sudo aptitude install build-essential gobjc gobjc++ gnustep gnustep-devel libgnustep-base-dev -y 2.编写makefile pp:$(s) gcc `gnustep-config --objc-flags` $(s) -o app -lgnustep-base -lobjc clean: rm *.d rm app 3.编写测试oc代码 1

Ubuntu 下安装opencv 编译后执行找不到库

在ubuntu下编译opencv程序后,执行报下面到错误:error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory解决方法:找到libopencv_开头到库的目录,在/usr/local/lib下面,在/etc/ld.so.conf.d/下面新建一个opencv.conf,里面写入/usr/local/lib,最后执行

ubuntu下安装 openssl&amp;&amp;编译运行测试代码

检查是否已安装 openssl: sudo apt-get install openssl 如果已安装执行以下操作:sudo apt-get install libssl-devsudo apt-get install libssl0.9.8 Ubuntu 下安装 GTK+ 开发库sudo apt-get install libgtk2.0-dev 代码: #include <stdio.h> #include <string.h> #include <openssl/hma

ubuntu下linphone的编译运行

LinPhone是一个IP电话工具,运行于Linux下.它能够让你通过internet来查询朋友的IP,并通过IP给他打电话.下面我会介绍如何在ubuntu下编译运行linphone. 1.前提条件: 已经在ubuntu下配置好android开发环境,详见http://blog.csdn.net/maylian7700/article/details/7538176#,这里不再赘述 2.然后使用git下载linphone-android在命令行里面输入git clone git://git.li