本文纯属转贴,原文如下
http://dev.firnow.com/course/6_system/linux/Linuxjs/200865/122399.html
记录几个命令。
1.源码树建立
//OS版本取得
shana@shana:~$ uname -r
//查询源码
shana@shana:/usr/src$ apt-cache search linux-source
//取得源码
shana@shana:/usr/src$ sudo apt-get install linux-source-2.6.22
//解冻源码
root@shana:/usr/src#tar jxvf linux-source-2.6.20.tar.bz2
//配置源码
root@shana:/usr/src/linux-source-2.6.22# make oldconfig
//编译源码
shana@shana:/usr/src/linux-source-2.6.22$ make
shana@shana:/usr/src/linux-source-2.6.22$ make bzImage
root@shana:/usr/src/linux-source-2.6.22#make modules
root@shana:/usr/src/linux-source-2.6.22#make modules_install
//确认源码树
cd /lib/modules/2.6.22-14-generic/
2.驱动程序例子
hello.c
//hello.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile
obj-m := hello.o
KERNELDIR := /lib/modules/2.6.20/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
3.编译,加载,卸载
//加载驱动
root@shana:/home/shana/driver# insmod ./hello.ko
//查看驱动
root@shana:/home/shana/driver# lsmod
//卸载驱动
root@shana:/home/shana/driver# rmmod hello
//查看日志
shana@shana:~/driver$ cat /var/log/syslog |grep world
分享到:
相关推荐
Ubuntu下驱动开发HelloWorld
### Ubuntu下驱动开发HelloWorld.pdf知识点解析 #### 一、驱动开发概述 在Linux环境下进行驱动开发是一项重要的技能,尤其对于那些希望深入了解操作系统内部工作原理的技术人员而言。本文档主要介绍如何在Ubuntu...
本文将详细讲解如何在Ubuntu下更新声卡驱动的程序包,特别是使用alsa(Advanced Linux Sound Architecture,高级Linux声音架构)来解决外接耳机仍有外放声音的问题。 1. **认识ALSA**: ALSA是Linux内核中的核心...
"Hello World"内核驱动程序是一个简单的起点,它可以帮助初学者熟悉内核模块的构建过程。这里我们将深入探讨如何在Ubuntu 14.04上创建并编译一个"Hello World"内核驱动,以及涉及到的关键文件。 首先,`hello.c`是...
首先,我们需要创建一个C源文件,比如`helloworld.c`,并在其中写入以下代码: ```c #include #include MODULE_LICENSE("GPL"); MODULE_AUTHOR("Your Name"); MODULE_DESCRIPTION("A simple kernel module to ...
2. **创建源代码文件**:创建一个C语言源代码文件,例如`helloworld.c`。在这个文件中,我们将编写基本的“Hello, World!”输出功能。 ```c #include #include #include MODULE_LICENSE("GPL"); MODULE_AUTHOR...
本篇文章将介绍如何使用 VMware Workstation 搭建 Ubuntu 驱动编程环境,从虚拟机的安装到第一个 HelloWorld 程序的调通。 一、虚拟机的安装 首先需要安装 VMware Workstation,选择 Typical 安装模式,按照默认...
本文将详细介绍如何在Ubuntu 10.04系统上搭建一个完整的驱动开发环境,包括Linux内核的下载、编译以及替换旧内核的过程,并通过示例说明如何创建一个简单的“Hello World”驱动模块。 #### 二、准备工作 首先需要...
1. 编写并加载卸载"Hello World"驱动程序,熟悉基本流程。 2. 创建字符设备驱动程序,实现挂载、卸载,并通过读、写和查询设备状态的函数进行验证。 实验步骤包括安装Ubuntu 10.10操作系统,确保GCC和GDB的安装,...
到这里helloworld 程序便完成了。 Qt Creator 编译的程序,在其工程文件夹下会有一个debug 文件夹,其中有程序的.exe 可执行文件。但Qt Creator 默认是用动态链接的, 就是可执行程序在运行时需要相应的.dll 文件。...
1. 编写并正确加载、卸载“Hello World”驱动程序。 2. 编写字符设备驱动程序,实现读、写和查看设备状态的功能。 实验步骤大致如下: 1. 安装Ubuntu 10.10操作系统。 2. 安装必要的开发工具,如GCC和GDB。 3. 检查...
【程序人生-Hello’s P2P】这篇报告深入探讨了编程世界中经典的“Hello World”程序在计算机系统中的生命周期,从源代码到运行过程的每一个阶段。报告详细介绍了C语言的Hello World程序如何通过预处理、编译、汇编、...
在Ubuntu下,可以通过`gcc hello.o -o hello`命令完成链接,生成可执行文件。 #### 6. 动态链接 动态链接是指在程序运行时动态加载外部库的过程。这种方式能够减少内存占用,提高程序间的资源共享。动态链接库通常...
压缩包内的子文件“hello-masm”、“hello-nasm”和“hello-linux”可能分别代表了使用MASM、NASM和Linux环境编写的“Hello World”程序示例。在汇编语言中,"Hello World"程序通常是学习汇编基础知识的第一步,它...
在 Ubuntu 下安装 Qt4 需要进行以下几个步骤:获取 Qt4 的源码、安装 Qt Creator、设置 QtCreator、编写最简单的 HELLO WORLD 程序。 首先,需要获取 Qt4 的源码,方法是将天嵌主光盘目录\TQ2440\Linux 资源\ QT源 ...
FS4412内核hello world模块实验代码、ubuntu18.04_helloworld实验代码、FS412 LED 字符设备驱动程序 传统模型、FS4412 LED字符设备、FS4412 LED字符设备驱动程序 平台总线(platformbus)模型、FS4412 串口模块实验...
这个压缩包"Ubuntu--helloworld.zip_Ubuntu!"显然与Ubuntu的内核编程相关,特别是针对初学者的教程。从文件列表来看,我们可以推测这是一个关于在Ubuntu上编译和编写内核模块的入门教程。 首先,我们看到一个名为...
最后,使用`gcc hello.c -o hello`编译,`./hello`运行程序。 C语言还涉及到预处理器宏、结构体、联合体、位运算等高级主题,以及标准库(如stdio、stdlib、string等)的使用。通过不断实践和学习,你可以深入理解...