最近在看linux的设备驱动程序,写一个简单的helloworld程序都花了我好久的时间,具体过程如下:
编写helloworld.c

编写Makefile

注意,makefile中的命令那里是一个tab,而不是多个空格,还有源文件的名字不要写错了,然后make,出现了下面这些错误make -C /lib/modules/3.8.0-29-generic/build M=/home/Linux/helloworld modules
make[1]: Entering directory `/usr/src/linux-headers-3.8.0-29-generic'
CC [M] /home/Linux/helloworld/helloworld.o
In file included from include/linux/types.h:5:0,
from include/linux/init.h:5,
from /home/Linux/helloworld/helloworld.c:1:
include/uapi/linux/types.h:4:23: fatal error: asm/types.h: No such file or directory
compilation terminated.
make[2]: *** [/home/Linux/helloworld/helloworld.o] Error 1
make[1]: *** [_module_/home/Linux/helloworld] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.8.0-29-generic'
make: *** [default] Error 2

在pc机的linux下运行helloworld驱动时不需要重新编译内核的,然后上面却提示缺少文件,后面看看确实是缺少文件,于是,我在windows下装了个虚拟机,用的也是ubuntu12.04,关于安装可以看我上传的资源,将这个helloworld.c和Makefile拷贝虚拟机下的ubuntu下,运行make,出现

ls一下可以看到生成的文件如下:

可以看到什么都没有改,然而这里就make成功了。看来用wubi安装系统有一定的缺陷。
insmod ./helloworld.ko加载驱动,没有打印信息,在/var/log/syslog下可以看到打印信息,注意不是在/var/log/messages下的哦。vim/var/log/syslog后按下G,跳到后面,看下图

这样,ubuntu12.04下pc机的helloworld驱动就正常运行起来了。
注明:上面的东西发表在10月15日,但在10月17日才找出真正的原因,上面的历程就当是一个回忆,下面对上面的错误的理解进行纠正。
首先:上面提到了再pc机的ubuntu(不是虚拟机,即是用wubi安装的ubuntu),编译helloworld驱动不成功,这个确实是不用编译内核的,上面报错的原因是由于他在make的时候是采用了交叉编译环境,而不是gcc。在修改了

注释到下面的3行,make就成功了。而绝不是wubi安装ubuntu系统带来了的问题。
发现该问题的过程:
10月15号,装了一个虚拟机,成功的运行了helloworld驱动程序后,就有了上面的文档,之后再虚拟机上装了交叉编译工具,在17日编译的时候再度出错,原来成功的东西又出错,就觉得是这里的问题了,过来,安装上面的改法就成功了,不容易啊,菜鸟。
分享到:
相关推荐
标题“libc6 for ubuntu12.04”涉及的是Ubuntu 12.04操作系统中的一个关键系统库——libc6。这个标题表明这是一个针对该特定版本Ubuntu的libc6软件包,它是Linux系统中核心的C语言运行时库。 **libc6详解** libc6...
在本文中,我们将详细介绍Ubuntu 12.04、14.04、16.04安装Nvidia显卡驱动的步骤和相关知识点。 知识点1:卸载旧版本的Nvidia驱动 在安装新的Nvidia显卡驱动之前,我们需要卸载旧版本的Nvidia驱动。使用以下命令...
Ubuntu 12.04下如何安装MySQL ,我按照这文档,已经成功在ubuntu 12.04安装成功mysql!
ubuntu 12.04下 小米wifi 的驱动·, 有脚本自动编译安装
ubuntu12.04下Java开发环境的搭建
### Ubuntu 12.04 安装及配置过程详解 #### 一、准备工作 **1. 下载 Ubuntu 12.04 镜像文件** - **32位与64位的选择:** - 建议大多数用户选择32位版本,除非您的计算机硬件支持64位并且您需要利用更多的RAM资源...
用 VMware 安装 Ubuntu 12.04详细过程图解
原来的ssh扫描报太多漏洞了,整理了下一键安装的脚本直接升级到最新的; #update Ubuntu12.04 : OpenSSH_7.9p1, OpenSSL 1.1.1b 26 Feb 2019 #old : OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
《Ubuntu 12.04 使用手册1—4》是一套专为Ubuntu 12.04 LTS(长期支持版)用户编写的详尽指南,旨在帮助初学者和进阶用户掌握这一开源操作系统的基本操作与高级技巧。Ubuntu 12.04,代号“Precise Pangolin”,是...
Ubuntu 12.04 下安装 Nginx、Python、uWSGI 和 Django 的步骤 在本文中,我们将介绍如何在 Ubuntu 12.04 环境下安装 Nginx、Python、uWSGI 和 Django。这些技术栈组合是非常流行的 Web 应用程序开发环境。 一、...
《学习Ubuntu 12.04入门指南》是一份针对初学者的详尽教程,旨在帮助用户熟悉并掌握Ubuntu 12.04 LTS(长期支持版)操作系统的基础操作和特性。Ubuntu是基于Linux内核的开源操作系统,以其用户友好、易用性和强大的...
在Ubuntu 12.04操作系统中安装Java Development Kit (JDK) ...以上步骤确保了在Ubuntu 12.04上成功安装和配置JDK,使系统能够识别并使用Java开发工具。记得根据实际情况调整路径和版本号,以适应不同的JDK和系统环境。
**Ubuntu12.04菜鸟使用手册合集** 这是一份专为Ubuntu 12.04新手设计的详尽指南,旨在帮助初次接触Linux系统的用户熟悉和掌握Ubuntu操作环境,将其配置得如同Windows系统般易用。Ubuntu是基于Debian的开源Linux发行...
《Ubuntu 12.04服务器入门指南》是一份针对Ubuntu 12.04操作系统服务器版本的使用指导文档。这份指南详细介绍了如何在Ubuntu 12.04系统上安装和配置各种服务器应用,从而满足用户特定的需求。它是通过一系列具体任务...
Ubuntu 12.04 是一个基于Debian的开源操作系统,以其用户友好性和稳定性而受到广大用户的喜爱。这个版本,也被称作Precise Pangolin(精确的穿山甲),在2012年发布,提供长达五年的长期支持(LTS),直至2017年。...
### Ubuntu 12.04 常用命令解析 #### 文件内容查看命令 在Linux环境中,特别是Ubuntu 12.04系统中,经常需要查看文件内容。本篇文章将重点介绍如何使用`head`、`tail`以及`sed`等命令来查看文件的部分内容。 #####...
Ubuntu12.04菜鸟使用手册合集+Ubuntu标准教程Ubuntu12.04菜鸟使用手册合集+Ubuntu标准教程Ubuntu12.04菜鸟使用手册合集+Ubuntu标准教程Ubuntu12.04菜鸟使用手册合集+Ubuntu标准教程Ubuntu12.04菜鸟使用手册合集+...
"rtl8192"驱动是为Realtek生产的RTL8192系列无线网卡设计的,用于在Ubuntu 12.04 LTS(长期支持版)上提供网络连接功能。这个驱动针对的是内核版本3.11.0,因为Ubuntu 12.04默认的内核可能不包含对这种网卡的完美...
最全,最好用 自己试试啊ubuntu12.04 vim 配置