原址

目的: 主要用于熟悉驱动程序编写及调试基本流程。

1.准备

操作系统: ubuntu12.04 LTS

2.源码

[cpp] view plain copy
  1. #include <linux/init.h>
  2. #include <linux/module.h>
  3. static int hello_init(void)
  4. {
  5. pr_info("Hello, World.\n");
  6. return 0;
  7. }
  8. static void hello_exit(void)
  9. {
  10. pr_info("Goodbye, cruel world\n");
  11. }
  12. module_init(hello_init);
  13. module_exit(hello_exit);
  14. MODULE_LICENSE("Dual BSD/GPL");

3.Makefile

[plain] view plain copy
  1. obj-m := hello.o
  2. KERNELDIR := /usr/src/linux-headers-$(shell uname -r)
  3. PWD := $(shell pwd)
  4. modules:
  5. $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
  6. modules_install:
  7. $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

4.编译

make:
[plain] view plain copy
  1. ckt@ubuntu:~/work/ldd/hello$ make
  2. make -C /usr/src/linux-headers-3.13.0-32-genericM=/home/ckt/work/ldd/hello modules
  3. make[1]: Entering directory`/usr/src/linux-headers-3.13.0-32-generic'
  4. CC [M]  /home/ckt/work/ldd/hello/hello.o
  5. Buildingmodules, stage 2.
  6. MODPOST 1modules
  7. LD [M]  /home/ckt/work/ldd/hello/hello.ko
  8. make[1]: Leaving directory`/usr/src/linux-headers-3.13.0-32-generic'

5.测试

[plain] view plain copy
  1. lsmod                  #查看当前加载的模块
  2. sudo insmod hello.ko         #加载hello.ko模块
  3. sudo rmmod hello             #移除hello.ko模块
  4. cat/var/log/syslog     #查看日志

编写kernel第一个Hello World相关推荐

  1. 编写程序创建一个通讯录文件,在其中存入10位同学的姓名、年龄、电话号码,并在屏幕上输出第2、4、6、8、10位同学的信息

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 8.编写程序创建一个通讯录文件,在其中存入10位同学的姓名.年龄.电话号码,并在屏幕上 ...

  2. Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString()方法分别显示上述日期

    Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString方法分别显示上述日期 题目 代码 思路 代码 题目 代码 思路 ...

  3. Java黑皮书课后题第7章:***7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能相互攻击(没有两个皇后在同行、同列、同一对角线)。编写程序显示一个解决方案

    7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能相互攻击(没有两个皇后在同行.同列.同一对角线).编写程序显示一个解决方案 题目 题目描述 破题 题目 题目描述 ...

  4. 编写程序输入一个5x5的矩阵,将最大元素与中心元素交换,并按行列对齐输出。...

    编写程序输入一个5x5的矩阵,将最大元素与中心元素交换,并按行列对齐输出. 题目描述 编写程序输入一个5x5的矩阵,将最大元素与中心元素交换,并按行列对齐输出. 输入描述 编写程序输入一个5x5的矩阵 ...

  5. java 在界面上画一个时钟_编写程序显示一个时钟 - javaCoder的个人页面 - OSCHINA - 中文开源技术交流社区...

    编写程序显示一个时钟.示例输出如图所示. 代码: package com.DisplayClock; import javax.swing.*; import java.awt.*; import j ...

  6. 编写程序定义一个有 10 个 int 型元素的数组,并以其在数组中的位置作为各元素的初值。

    *编写程序定义一个有 10 个 int 型元素的数组,并以其 在数组中的位置作为各元素的初值.*/ int main(void) {     int array[10];     for (int i ...

  7. 【指针】编写并测试一个函数larger_of(),该函数把两个double类型变量的值替 换为较大的值。例如, larger_of(x, y)会把x和y中较大的值重新赋给两个变 量。

    编写并测试一个函数larger_of(),该函数把两个double类型变量的值替 换为较大的值.例如, larger_of(x, y)会把x和y中较大的值重新赋给两个变 量. #include < ...

  8. 【Python】Python实验:回文是一个正向和逆向都相同的整数,如123454321、463364、9889。编写函数判断一个整数是否是回文数。

    回文是一个正向和逆向都相同的整数,如123454321.463364.9889.编写函数判断一个整数是否是回文数. 算法源码 def huiwen(n):if n==n[::-1]: ##正序和倒序是 ...

  9. python计算整数各位数字之和_编写函数,计算一个整数各位数字之和

    话题:编写函数,计算一个整数各位数字之和回答:这个关键是怎么得到每位数, #includeint sum_num(int num)//得到每位数的函数 { int sum=0; while(num10 ...

最新文章

  1. Unity Android 2021:用C#打造3D ZigZag赛车游戏
  2. 深入Java泛型(二):通配符与嵌套
  3. 几种芯片架构:X86、ARM、RISC-V和MIPS
  4. Attempted relative import in non-package
  5. 使用springcloud gateway搭建网关(分流,限流,熔断)
  6. Kafka设计解析(八)- Exactly Once语义与事务机制原理
  7. 【Python】Matplotlib使用Cursor实现UI定位
  8. (71)FPGA时钟双沿约束如何做?
  9. hibernate组件映射
  10. 路由器AP、路由、桥接模式有什么区别
  11. 测试C++代码与WebBrowser HTML的互动
  12. 查看JVisualVM查看信息
  13. 大型交通流仿真平台——Matsim中文使用手册05
  14. 基于SSM的房屋租赁管理系统
  15. 教育研究方法 的思维导图
  16. 还在为挖不到漏洞烦恼?还在为如何才能升职加薪困惑?听听徐老师怎么说.........
  17. 赵望野:前端工程师的困惑
  18. 从零开始:微信小程序零基础入门宝典
  19. 爬虫干货 | 爬虫IP代理模块介绍及实战
  20. 自制批量 PDF 转图片的工具软件(附百度网盘地址)

热门文章

  1. Windows vCenter 6.5升级 VUM的安装
  2. golang windows下杀进程
  3. redis 辅助工具包 - redis-aux
  4. 介绍几种不同的标志符号 CMC CPA CPE CMA
  5. java调用数组计算器_java按钮控件数组实现计算器界面示例分享
  6. python设计一个爱心_python画一个玫瑰和一个爱心
  7. Xstream-1 原理
  8. 树莓派 zero cpu:elpida b4432bbpa-1d
  9. C#内存共享通讯示例
  10. 利用条件随机场模型进行中文分词