linux设备驱动程序_hello word 模块编译各种问题集锦
在看楼经典书籍《linux设备驱动程序》后,第一个程序就是编写一个hello word 模块。
原以为非常easy,真正弄起来,发现问题不少啊。前两天编过一次,因为没有记录,今天看的时候又忘了,所以无论多晚。都得记录一下。
1、首先说明一下我的系统环境:ubuntu 14.04,内核是3.13.0-29-generic
2、在我电脑里装了git版本号控制器。我clone了一个linux内核库在我的电脑上,所以我就能够随意的切换到随意的分支上去。最初是用的2.6.3,后来编译的时候遇到各种问题。google了一下,现将各位大神的解决方式链接一下:http://blog.csdn.net/sabalol/article/details/2076610
hello word代码:
1 #include <linux/init.h>
2 #include <linux/module.h>
3
4 MODULE_LICENSE("Dual BSD/GPL");
5
6 static int hello_init(void)
7 {
8 printk(KERN_ALERT "Hello World enter\n");
9 return 0;
10 }
11
12 static void hello_exit(void)
13 {
14 printk(KERN_ALERT "Hello World exit\n");
15 }
16
17 module_init(hello_init);
18 module_exit(hello_exit);
19
20 MODULE_AUTHOR("zhangjun");
21 MODULE_DESCRIPTION("A simple Hello World Module");
22 MODULE_ALIAS("a simple module");
Makefile代码:
1 obj-m := hello.o
2 KERNEL :=/lib/modules/3.13.0-29-generic/build
3 PWD :=$(shell pwd)
4 modules:
5 $(MAKE) -C $(KERNEL) M=$(PWD) modules
6
7 .PHONEY:clean
8 clean:
9 rm -f *.o *.ko
说明:请将KERNEL后面的“/lib/modules/3.13.0-29-generic/build” 改成与自己系统相匹配的路径
3、刚開始我没实用系而统自带的那个路径“/lib/modules/3.13.0-29-generic/build ”,而是自己的源码,它可以编译,可是载载入模块的时候会报insmod: error inserting 'hello.ko': Invalid module format这个错误。查的时候是说编译源码版本号和系统版本号不一样。后来我改成一样的。还是不正确。最后看到了这篇文章,可以说是解救楼我os.51cto.com/art/201108/287684.htm
,在此感谢这位仁兄。
然后将编译的源码路径改成系统自带的路径后,就大工告成了。
4、在ubuntu 终端载入的时候发现没有输出,,这让我非常郁闷。事实上这是由于桌面环境下的终端是模拟终端。仅仅能在字符终端以下才干显示输出。
假设在模拟终端下的话,它是把信息输出到“/var/log/kern.log“了(ps:ubuntu系统是这个文件夹。其它系统可能是/var/log/message“)。
5、我们要载入的时候可以看到输出就须要切换到字符界面下去。怎么切换?在ubuntu以下是crtl+alt+f2 或者f3。f4,f5,f6都行。
(ps:记得切换回桌面环境是alt+F7)
6、经常使用命令:查看自己内核版本号 uname -a
參考:blog.csdn.net/wwyyxx26/article/details/6325843
再给各位程序员点好东西:https://github.com/txthinking/google-hosts相信喜欢编程的你都喜欢上google。。fuckGWF。
linux设备驱动程序_hello word 模块编译各种问题集锦的更多相关文章
- Linux设备驱动程序学习----3.模块的编译和装载
模块的编译和装载 更多内容请参考Linux设备驱动程序学习----目录 1. 设置测试系统 第1步,要先从kernel.org的镜像网站上获取一个主线内核,并安装到自己的系统中,因为学习驱动程序的编写 ...
- linux设备驱动程序该添加哪些头文件以及驱动常用头文件介绍(转)
原文链接:http://blog.chinaunix.net/uid-22609852-id-3506475.html 驱动常用头文件介绍 #include <linux/***.h> 是 ...
- Linux设备驱动程序 第三版 读书笔记(一)
Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #inclu ...
- Linux设备驱动程序学习之分配内存
内核为设备驱动提供了一个统一的内存管理接口,所以模块无需涉及分段和分页等问题. 我已经在第一个scull模块中使用了 kmalloc 和 kfree 来分配和释放内存空间. kmalloc 函数内幕 ...
- Linux设备驱动程序学习----1.设备驱动程序简介
设备驱动程序简介 更多内容请参考Linux设备驱动程序学习----目录 1. 简介 Linux系统的优点是,系统内部实现细节对所有人都是公开的.Linux内核由大量复杂的代码组成,设备驱动程序可以 ...
- linux设备驱动程序--在用户空间注册文件接口
linux字符设备驱动程序--创建设备节点 基于4.14内核,运行在beagleBone green 在上一讲中,我们写了第一个linux设备驱动程序--hello_world,在驱动程序中,我们什么 ...
- linux设备驱动程序--gpio控制
gpio驱动程序 上一章节linux设备驱动程序--创建设备节点章节主要介绍了linux字符设备驱动程序的框架,从这一章节开始我们讲解各种外设的控制,包括gpio,i2c,dma等等,既然是外设,那就 ...
- linux设备驱动程序--hello-world
linux字符设备驱动程序--hello_world 基于4.14内核, beagleBone green平台 PC端的设备驱动程序 有过电脑使用经验的人都知道,当我们将外部硬件设备比如鼠标键盘插入到 ...
- linux设备驱动程序-i2c(1):i2c总线的添加与实现
linux设备驱动程序-i2c(1):i2c总线的添加与实现 (基于4.14内核版本) 在上一章节linux设备驱动程序-i2c(0)-i2c设备驱动源码实现中,我们演示了i2c设备驱动程序的源码实现 ...
随机推荐
- Android requestWindowFeature(Window.FEATURE_NO_TITLE)无效解决方法
今天在<第一行代码>上学习做自定义标题栏,需要将系统自带的标题栏隐藏掉,使用自定义的标题栏,结果发现,requestWindowFeature(Window.FEATURE_NO_TITL ...
- IT项目为什么失败 --美国IT项目管理硕士笔记(一)
IT项目为什么失败 什么是项目 项目可以被看作任何一系列的活动和任务.这些活动和任务有一个特定目标需要在特定要求下完成,并有一个明确的开始结束日期和资金限制(如果有).项目需要消耗人力或非人力资源 ...
- iOS中ARC和非ARC混用
如果在使用第三方类库的时候,我们可能会遇到一些内存管理的问题 那么如何在一个工程中实现ARC和非ARC混用呢,例如你创建一个ARC的工程,但是你引用的第三方类库是非ARC管理内存的 首先点击工 ...
- Flask框架 之重定向、cookie和session
一.URL重定向(redirect) @app.route("/login") def login(): # 使用url_for函数通过视图函数的名字找到url路径 url = u ...
- vue基础---表单输入绑定
[一]基础用法 用 v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定.它会根据控件类型自动选取正确的方 ...
- TWaver矢量小试——Android演进路线图
还有半个多月就到春节了,年底相信很多公司都会进行年度总结以及公司发展状况总结,在这过程中难免会用到RoadMap,在这我们也使用TWaver的矢量部分绘制一个Android系统的发展历程.先看效果:什 ...
- rem2
html{font-size:50px;}body{font-size:24px;}@media screen and (min-width:320px){ html{font-size:21.333 ...
- ORM优化
orm优化数据库访问:https://docs.djangoproject.com/en/1.11/topics/db/optimization/ 一.QuerySet 可迭代 querysey=mo ...
- NFS文件服务
安装NFS服务 Yum install nfs-utils –y 2.关闭防火墙 service iptables stop 3./etc/exports NFS服务配置文件 /home/share ...
- * format-- set command window output display format
the displayed number may not match the input number due to display format default: 4 decimal syntax: ...