一般内核驱动都是在实体机上跑的,那有没有方法在ubuntu直接编译并运行呢?带着这个问题在网上查了一些资料,之后就实现了。
运行
hello.c
 
  1. #include<linux/init.h>  //初始换函数
  2. #include<linux/kernel.h>  //内核头文件
  3. #include<linux/module.h>  //模块的头文件
  4.  
  5. static  int  hello_init(void)
  6. {
  7.     printk("aldrich Hello, world\n");
  8.     return0;
  9. }
  10.  
  11. staticvoid hello_exit(void)
  12. {
  13.     printk("aldrich Goodbye,Hello world\n");
  14. }
  15.  
  16. module_init(hello_init);
  17. module_exit(hello_exit);
  18. MODULE_LICENSE("BSD/GPL");
Makefile
 
  1. obj-m:=hello.o
  2. KERNELDIR:=/lib/modules/`uname -r`/build
  3. PWD :=$(shell pwd)
  4. modules:
  5. $(MAKE)  -C  $(KERNELDIR)  M=$(PWD)  modules
  6. clean:
  7. rm -rf *o *.mod.c *.order *.symvers
开始编译
 
  1. sudo make
输出
  1. make -C /lib/modules/`uname -r`/build M=/home/aldrich/work/hello modules
  2. make[1]:Entering directory '/usr/src/linux-headers-4.4.0-31-generic'
  3. CC [M]/home/aldrich/work/hello/hello.o
  4. Building modules, stage 2.
  5. MODPOST 1 modules
  6. CC /home/aldrich/work/hello/hello.mod.o
  7. LD [M]/home/aldrich/work/hello/hello.ko
  8. make[1]:Leaving directory '/usr/src/linux-headers-4.4.0-31-generic'
生成的文件
  1. hello.c hello.mod.c hello.o modules.order
  2. hello.ko hello.mod.o MakefileModule.symvers
加载模块
 
  1. sudo insmod hello.ko
会在/var/log/syslog文件中输出该打印信息
查看加载模块
 
  1. sudo  lsmod
.
 
  1. Module                 Size  Used by
  2. hello                  16384  0
删除模块
 
  1. sudo  rmmod  hello
查看输出的打印信息‘
 
  1. cat  /var/log/syslog  |grep  world
.
 
  1. Feb2019:33:17 tom kernel:[3792.439223] aldrich Hello, world
  2. Feb2019:33:50 tom kernel:[3824.708500] aldrich Goodbye,Hello world
至此。
 
 
 
 
 
 
 
 
 
 

Ubuntu下编译Hello World驱动并运行全过程的更多相关文章

  1. Ubuntu下编译C++ OpenCV程序并运行

            因为想试跑yolov3的缘故,所以装了ubuntu系统,直接通过U盘装的,并不像他们说的“折腾”,反而一切非常顺利,比装软件还简单.然后就是要用C++跑opencv的程序用于比赛,出于 ...

  2. 【转】在Ubuntu下编译Android源码并运行Emulator

    原文网址:http://www.mcuos.com/thread-4553-1-1.html 建立编译环境 1.在VirtualBox上安装Ubuntu 2.安装JDK   $ sudo apt-ge ...

  3. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  4. Ubuntu下安装nvidia显卡驱动

    layout: post title: Ubuntu下安装nvidia显卡驱动 date: 2015-10-02 17:19:06 categories: 常用命令 tags: 显卡 驱动 最近一直在 ...

  5. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  6. ubuntu下编译java程序

    ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class Hel ...

  7. ubuntu下编译VLC源码

    http://blog.csdn.net/beitiandijun/article/details/9225591ubuntu下编译VLC源码 分类: 视频处理 2013-07-02 17:33 57 ...

  8. ubuntu下编译caffe

    Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...

  9. 在Ubuntu下编译wpa_supplicant

    最近在研究WiFi联盟的多屏互动协议Miracast,其中需要用到wpa_supplicant,编译中遇到了一些问题,经过一下午的折腾也都解决了,下面分享给各位. 一.编译需要用到三个库源码包,分别是 ...

随机推荐

  1. 我从16ASPX上下了一个程序在运行时出错是怎么回事?运行时出现用户SA登陆失败,但是我已经把数据库导入SQL

    如果你账号密码正确,那你可能没有打开你的管线服务,或者没有配置好你的客户端

  2. 同步mysql数据到ElasticSearch的最佳实践

    Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全 ...

  3. POJ1655 Balancing Act(树的重心)

    树的重心即树上某结点,删除该结点后形成的森林中包含结点最多的树的结点数最少. 一个DFS就OK了.. #include<cstdio> #include<cstring> #i ...

  4. 【bzoj1415】【聪聪和可可】期望dp(记忆化搜索)+最短路

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=57148470 Descrition 首先很明显是 ...

  5. 前端福利:一套UI框架

    阅读目录 背景 预览效果 表单组件 普通文本框 多行文本框 复选框 切换滑块 单选框 下拉选择框 数字输入框 时间选择 文件选择 显示文本 按钮 开源地址 背景 目前市场上有很多表单美化的UI,做的都 ...

  6. ArcMAP定义投影坐标

    WGS84形式的高斯克吕格投影在ArcGIS系统中是不存在的,需要自己去定义.下面为MARK的定义过程.

  7. mybatis-mysql小优化

    原文:http://blog.csdn.net/jinzhencs/article/details/51656548 1.查询某条记录是否存在 <!-- 查询s是否被创建过:Uuid,name, ...

  8. android开发之自定义圆形ImagView

    在日常使用中我们经常会使用到圆形的图片,但是android系统中并没有默认的圆形控件,所以我们需要自己来写一个自定义的ImagView来显示一张圆形的图片,下面先看效果 详细的方法是我们自定义一个类, ...

  9. selenium 自动化测试 测试报告 生成

    https://www.cnblogs.com/yoyoketang/p/6140439.html https://www.cnblogs.com/testyao/p/5658200.html 一.下 ...

  10. 用DotSpatial下载谷歌瓦片图并展示到地图控件上 【转】

    http://blog.csdn.net/caoshiying/article/details/51991647 上一篇文章讲解如何加载各地图的WMS地图服务.虽然不涉及到瓦片,但是每次地图刷新都要请 ...