一般内核驱动都是在实体机上跑的,那有没有方法在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. Ubuntu16.10 +python3.5+Tensorflow 1.1

    1.python版本检查 因为Ubuntu16.10已经默认安装了python2.7 和 3.5,检查python版本, 如果为python2.7,那么就需要我们设置python3.5为默认版本. 查 ...

  2. python 将windows字体中的汉字生成图片的方法

    #encoding: utf-8import osimport pygame chinese_dir = '黑体常规'if not os.path.exists(chinese_dir): os.mk ...

  3. ESXI和vSphere的安装配置-实现一台电脑硬件虚拟化为两台

    本篇文章包含以下几个部分: 1EXSI软件和vSphere软件的安装 2在vSphere上安装虚拟系统 3对虚拟系统通过配置实现硬件虚拟化,实现硬件直通 1.EXSI安装 通过网上下载EXSI ISO ...

  4. Codeforces 1028E. Restore Array

    题目直通车:http://codeforces.com/problemset/problem/1028/E 解法:设原数组为ar[],求ar中的最大值的下标ins,依次向前遍历一遍,每一个答案值都为前 ...

  5. (寒假集训)Cow Art(bfs)

    Cow Art 时间限制: 1 Sec  内存限制: 64 MB提交: 13  解决: 10[提交][状态][讨论版] 题目描述 A little known fact about cows is t ...

  6. noip数论复习总结

    (上不了p站我要死了,侵权度娘背锅) 勉勉强强算是把数论复习的差不多了. 总结一下吧. 其实数论的知识大部分是结合在一起的,勉强分类总结 组合数 求法 组合数的求法根据不同情况选用不同的方法 2.3都 ...

  7. Windows下将ISO镜像制作成U盘启动的工具(U盘启动工具/UltraISO/Rufus/Universal-USB)

    说明:基于Windows的U盘启动制作都是非常的简单,在软件上指定ISO文件之后,一般都是选择写入到哪个U盘即可. 1.UltraISO 2.Rufus 3.Universal-USB 4.大白菜

  8. CSS限制

    http://www.cnblogs.com/YanPSun/archive/2012/03/16/2400141.html

  9. git回退到某个commit

    git log查看提交历史及提交的commit_id 回退命令: $ git reset --hard HEAD^ 回退到上个版本$ git reset --hard HEAD~3 回退到前3次提交之 ...

  10. IntelliJ IDEA 配合 Maven 的一些技巧:Profiles

    环境 IntelliJ IDEA 2017.1 Maven 3.3.9 Nexus 3.2.1 学习前提 了解 Maven 配置的基本用法 了解私有仓库,比如 nexus 的一些概念 强烈建议把 Ma ...