这学期对了一门操作系统,满怀着好奇装了虚拟机然后安了Ubuntu,这周作业是编译内核和安装个模块,妈耶,折腾了我一两天。终于弄完,CSDN上有挺多类似的教程,例如陈皓的跟我一起写Makefile,写的很详细并且容易懂,不过我建议想速成不深究的人可以看看我这篇。。。

Makefile有它自己独特的写法:

target ... : prerequisites ...
            command
            ...

...

请注意,command前面不是空格!command前面不是空格!command前面不是空格!而是tab!而是tab!而是tab!

好了,进入正题

先编写一个hello.c文件

终端输入命令:gedit hello.c

保存退出

输入gedit Makefile

这里当时我忘了注释,这里添加一个带注释的版本

obj-m:=hello.c

KERNELDIR:=/lib/modules/$(shell uname-r)/build  #Kernel的路径

PWD:=$(shell pwd)    #当前编辑器(gedit)的工作路径

default:
	make -C $(KERNELDIR) M=$(PWD) modules
clean:
	rm -f *.ko *.o *.symvers *.cmd *.cmd.o  #清除后缀分别为o,ko,cmd,cmd.o的文件

我之前跟着网上很多教程弄完到这一步之后输入make命令死活生不成.ko即insmod能识别的文件,一直没懂为什么,所以我特地去图书馆借了一本书,然而按着来还是没用,后来陆续看了很多教程,依旧不行,之后看到有些大佬说Linux越到高版本越复杂,于是我又升级了一下make,还是不行,最终我没有找到捷径,用的方法稍微复杂了一点,但.ko文件还是生成了。

这里贴上方法:

首先进入终端,因为这个操作需要改动文件,所以需要在root方式下进行操作,于是输入sudo su,输入密码后操作

先进入编辑器的工作路径,也就是hello.o的存放路径,例如我的就是/home/yintianhao,具体看你的系统

即输入命令cd /home/yintianhao (cd命令很多人应该都知道,change directory)

然后输入make -C /lib/modules/2.6.32/build M=/home/yintianhao(-C后面的路径根据内核而定,例如我的不是2.6.32而是4.15.12)

之后便会出现这个

通过ls命令可以看到有.ko文件生成

然后通过insmod命令安装模块,通过lsmod查看是否安装成功,如果列表里面就成功,显然我这成功了

之后可以通过rmmod移除模块,同样用lsmod查看是否删除成功

显然我这没有,成功,写实验报告去了,溜了溜了

利用Makefile安装helloworld模块(速成)的更多相关文章

  1. 利用npm 安装删除模块

    转自 涵一原文 利用npm 安装删除模块 1. npm安装模块 [npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录:[npm install -g xxx]利用npm安 ...

  2. Python3 利用pip安装BeautifulSoup4模块(Windows版)

    一.找到Python3的安装文件夹 二.将路径复制 三.Windows10 打开Windows PowerShell(管理员).Windows 8.8.1.7使用cmd 切换到相应目录 四.此目录下的 ...

  3. 利用pip安装模块(以安装pyperclip为例)

    >任务:利用pip安装pyperclip模块 >前提:你已经在你的电脑里面安装啦Python2.7的Windows版本,并且已经配置了环境变量 >实现步骤 >>打开你的P ...

  4. Python_pip_02_利用pip安装模块(以安装pyperclip为例)

    >任务:利用pip安装pyperclip模块 >前提 你已经在你的电脑里面安装啦Python2.7的Windows版本,并且已经配置了环境变量 >实现步骤 >>打开你的P ...

  5. npm安装删除模块以及cnpm淘宝镜像

    npm安装模块 [$ npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录: [$ npm install -g xxx]利用npm安装全局模块xxx: npm 删除模块 ...

  6. npm 安装 卸载 模块(转载)

    来源 https://blog.csdn.net/yihanzhi/article/details/75665959 利用npm 安装删除模块 npm安装模块 [npm install xxx]利用 ...

  7. npm 安装卸载模块

    npm安装模块 npm install xxx利用 npm 安装xxx模块到当前命令行所在目录 npm install -g xxx利用npm安装全局模块xxx 1 2 本地安装时将模块写入packa ...

  8. vue用npm安装删除模块element-ui mint-ui

    vue用npm安装删除模块element-ui mint-ui 在vue项目中先引入了element-ui,后来发现移动版的需要用mint-ui,所以需要先卸载了再安装.卸载element-ui:np ...

  9. 用 npm 安装删除模块

    npm安装模块 [npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录: [npm install -g xxx]利用npm安装全局模块xxx: 本地安装时将模块写入pac ...

随机推荐

  1. 2019.01.26 codeforces 528D. Fuzzy Search(fft)

    传送门 fftfftfft好题. 题意简述:给两个字符串s,ts,ts,t,问ttt在sss中出现了几次,字符串只由A,T,C,GA,T,C,GA,T,C,G构成. 两个字符匹配的定义: 当si−k, ...

  2. java 判断对象是否是某个类的类型两种方法

    第一种: instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法: resul ...

  3. 关于oracle的基础增删改查操作总结

    ① 进入数据库: sqlplus“/as sysdba” 或者sqlplus / as sysdba 注:完整格式:  sqlplus“用户名/密码@数据库名as sysdba” 注:请注意,sqlp ...

  4. linux 安装 ORACLE JDK 8

    1.卸载默认的OPENJDK 查看 open jdk 的安装 rpm -qa | grep java 卸载 openjdk rpm -e --nodeps java-1.7.0-openjdk-1.7 ...

  5. openstack查看命令的restful调用形式

    [root@cc10 fast-pulsar2]# [root@cc10 fast-pulsar2]# cinder --debug type-create hzb DEBUG:keystonecli ...

  6. excel的小bug

    http://muchong.com/html/201710/3913047.html Excel也有相同现象,试着计算:exp(-1.5^2),exp(0-1.5^2),exp(-(1.5)^2)看 ...

  7. IntelliJ IDEA 2017版 编译器使用学习笔记(十) (图文详尽版);IDE快捷键使用;IDE关联一切

    关联一切 一.与spring关联      通过图标跳转相关联的类 设置关联:进入project structure ===>facets =>选加号,===>选spring,默认添 ...

  8. DDR中的一些知识点说明(ODT,ZQ校准,OCT,TDQS)

    ODT ( On-DieTermination ,片内终结)ODT 也是 DDR2 相对于 DDR1 的关键技术突破,所谓的终结(端接),就是让信号被电路的终端吸 收掉,而不会在电路上形成反射, 造成 ...

  9. Verilog中的阻塞与非阻塞

    这篇文档值得阅读 按说阻塞与非阻塞是Verilog中最基本的东西,也是老生常谈.但是最近看到很多程序里用到阻塞语句竟然不是很明白,说到底是从来没有自己仔细分析过.当然一般情况程序中也是推荐用非阻塞的. ...

  10. js基础学习笔记(一)

    * 在js编写过程中,尽量保持统一使用单引号 'XXXX': * 所有变量都要声明 var,避免全局函数调用的冲突: 1.1    输出内容 docment.write(‘aileLi’); 改变某I ...