一般内核驱动都是在实体机上跑的,那有没有方法在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. python获取小程序手机号并绑定

    最近在做小程序开发,在其中也遇到了很多的坑,获取小程序的手机号并绑定就遇到了一个很傻的坑. 流程介绍 官方流程图 小程序使用方法 需要将 <button> 组件 open-type 的值设 ...

  2. 洛谷——P2118 比例简化

    P2118 比例简化 题目描述 在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果.例如,对某一观点表示支持的有1498 人,反对的有 902人,那么赞同与反对的比例可以简单的记为149 ...

  3. 【bzoj2393】【Cirno的完美算数教室】容斥原理的剪枝应用

    (上不了p站我要死了,侵权度娘背锅) 在用容斥定理时,常常会用到dfs的形式,如果枚举完所有的情况可能会超时,其剪枝的优化很是重要. Description ~Cirno发现了一种baka数,这种数呢 ...

  4. java amr格式转mp3格式(完美解决Linux下转换0K问题)

    原文:http://linjie.org/2015/08/06/amr%E6%A0%BC%E5%BC%8F%E8%BD%ACmp3%E6%A0%BC%E5%BC%8F-%E5%AE%8C%E7%BE% ...

  5. 怎对于Foreach 不能添加IF的问题

    我不们直接在Foreach 里面直接添加IF,这样会报错,这个前提是子视图,其他的我没有试验过.像这样: @foreach (Gift.Modules.Model.Entitys.XT_CZ item ...

  6. 常用函数 __MySQL必知必会

    ----------------------使用数据处理函数 ---------------------- 常见的文本处理函数 Left() 返回串左边的字符Length() 返回串的长度Locate ...

  7. codeforces559A--Gerald&#39;s Hexagon(计算几何)

    A. Gerald's Hexagon time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  8. selenium firefox设置代理

    from selenium import webdriver profile = webdriver.FirefoxProfile() profile.set_preference('network. ...

  9. 配置php扩展redis

    环境说明: 系统版本    CentOS 6.9 x86_64 软件版本    nginx-1.12.2        php-5.5.38        yum安装redis3.2.11 php扩展 ...

  10. windows 10 超级优化提速 附系统服务列表纯净

    如图,本机安装了vs2017 office2016 迅雷.谷歌浏览器,不建议安装其它任何软件.vs2017为开发软件,用于编程,一般用户用不到. 如果想安装其它的软件,建议优先使用绿色版本的. 下载服 ...