利用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 ...
随机推荐
- 2019.01.22 SCU4444 Travel(最短路+bfs)
传送门 题意简述:给出一张nnn个点的完全图,有mmm条边边权为aaa其余点边权为bbb,问从111到nnn的最短路. 思路:分类讨论一波即可. (1,n)(1,n)(1,n)的边权为aaa,那么只用 ...
- cacti+CentOS6.5
系统版本:CentOS6.5 软件版本:cacti-0.88f 需要预安装的软件有以下几种,可以通过yum安装全部 yum -y install net-snmp* yum -y install op ...
- excel2007自定义菜单项学习
参考: http://club.excelhome.net/thread-1288002-1-1.html http://club.excelhome.net/thread-709306-1-1.ht ...
- maven打包到私服,打的是war包,好郁闷
jenkins打完包上传到私服以后,发现只有war包,然而并木有别人想要的jar包,郁闷之极啊! 然后把公司的项目做了对比,发现这个正常的能上传jar包的项目的与我的另一个项目有点出入: 正常: 异 ...
- CCommandLineInfo类
## CCommandLineInfo cmdInfo;//定义命令行 ParseCommandLine(cmdInfo);//解析命令行 // 调度在命令行中指定的命令.如果 // 用 /RegSe ...
- PreTranslateMessage(MSG* pMsg)专题
.. BOOL CQuickMosaicDlg::PreTranslateMessage(MSG* pMsg) { if (pMsg->message==WM_KEYDOWN) //键盘按下 { ...
- centos设置服务开机自动启动的方法
centos安装好apache,mysql等服务器程序后,并没有设置成开机自动启动的,为避免重启后还要手动开启web等服务器,还是做下设置好,其实设置很简单,用chkconfig命令就行了. 例如要开 ...
- SSM_CRUD新手练习(2)配置文件
配置之前现需要引入依赖的jar包: *Spring *SpringMvc *Mybatis *数据库连接池,驱动包 *其他(jstl,Servlet ,Junit..) 1.poxm.xml < ...
- restfull和传统http的区别
摘自 https://bbs.csdn.net/topics/390716580 restfull是一种风格,不是规范,也不是所谓的封装,他只是将http协议用的更彻底了,我们在普通的开发中,虽然说是 ...
- Hdu1083 Courses
Courses Problem Description Consider a group of N students and P courses. Each student visits zero, ...