利用Makefile安装helloworld模块(速成)
这学期对了一门操作系统,满怀着好奇装了虚拟机然后安了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模块(速成)的更多相关文章
- 利用npm 安装删除模块
转自 涵一原文 利用npm 安装删除模块 1. npm安装模块 [npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录:[npm install -g xxx]利用npm安 ...
- Python3 利用pip安装BeautifulSoup4模块(Windows版)
一.找到Python3的安装文件夹 二.将路径复制 三.Windows10 打开Windows PowerShell(管理员).Windows 8.8.1.7使用cmd 切换到相应目录 四.此目录下的 ...
- 利用pip安装模块(以安装pyperclip为例)
>任务:利用pip安装pyperclip模块 >前提:你已经在你的电脑里面安装啦Python2.7的Windows版本,并且已经配置了环境变量 >实现步骤 >>打开你的P ...
- Python_pip_02_利用pip安装模块(以安装pyperclip为例)
>任务:利用pip安装pyperclip模块 >前提 你已经在你的电脑里面安装啦Python2.7的Windows版本,并且已经配置了环境变量 >实现步骤 >>打开你的P ...
- npm安装删除模块以及cnpm淘宝镜像
npm安装模块 [$ npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录: [$ npm install -g xxx]利用npm安装全局模块xxx: npm 删除模块 ...
- npm 安装 卸载 模块(转载)
来源 https://blog.csdn.net/yihanzhi/article/details/75665959 利用npm 安装删除模块 npm安装模块 [npm install xxx]利用 ...
- npm 安装卸载模块
npm安装模块 npm install xxx利用 npm 安装xxx模块到当前命令行所在目录 npm install -g xxx利用npm安装全局模块xxx 1 2 本地安装时将模块写入packa ...
- vue用npm安装删除模块element-ui mint-ui
vue用npm安装删除模块element-ui mint-ui 在vue项目中先引入了element-ui,后来发现移动版的需要用mint-ui,所以需要先卸载了再安装.卸载element-ui:np ...
- 用 npm 安装删除模块
npm安装模块 [npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录: [npm install -g xxx]利用npm安装全局模块xxx: 本地安装时将模块写入pac ...
随机推荐
- 防止网站被镜像,被iframe
1.防止网站被镜像 现象:他人域名访问到的是我的网站解析的ip地址我的 解决方法: http.ini里可以这样写 "RewriteCond Host: !^www.web\.cn$ Rewr ...
- vue的computed属性
vue的computed属性要注意的两个地方,1,必须有return,2,使用属性不用括号 <div> <input type="text" v-model=&q ...
- __getitem__()、__setitem__()与__delitem__()
# 如果想要运用[]取值,可以实现__getitem__() # 想要运用[]设值,可以实现__setitem__() # 若想通过del与[]来删除,可以实现__delitem__() class ...
- Nodejs 传图片的两种方式
node上传图片第一种方式 1,首先引入模块 "connect-multiparty": "~1.2.5", 在package.json中添加 "co ...
- python 基础_字符串9
凡是重要的# 字符串的创建,字符串可以是单引号创建也可以是双引号创建 str1 = 'hello world' #当你要输出的是单引号的时候,你括起字符串的必须是双引号.当你输出的是双引号的时候,你括 ...
- redis概览
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串 ...
- 阿里云oss如何上传一个文件夹
最近公司在做工程项目,实现文件夹云存储上传 网上找了很久,发现很多项目都存在一些问题,但还是让我找到了一个成熟的项目. 工程: 对项目的文件夹云存储上传功能做出分析,找出文件夹上传的原理,对文件夹的云 ...
- Ng第九课:神经网络的学习(Neural Networks: Learning)
9.1 代价函数 9.2 反向传播算法 9.3 反向传播算法的直观理解 9.4 实现注意:展开参数 9.5 梯度检验 9.6 随机初始化 9.7 综合起来 9.8 自主驾驶 9.1 ...
- NodeJs回调操作Promise化
mongoose是一个NodeJs下MongoDB的ORM库.使用这个库,您从DB到表(collection)都不用创建了.只需要在项目中定义好Model. 下面就是用上一篇的代码来演示如何把mong ...
- linux 常用命令(个人记录)
Linux专家的秘诀:思考-实践-在思考-再实践...linux常用命令:root 管理员用户startx 进入shutdown -h now 立刻关机shutdown -r now 现在重新启动计算 ...