准备事项:
虚拟机 | 系统 | 文件传输工具 |
---|---|---|
VMware | CentOS | Winscp |
VitualBox | Ubuntu | Xftp |
有222种选择,我是Virtualbox+Ubuntu+Winscp |
-
外网均速90k挂一晚上才下完。
百度云链接:https://pan.baidu.com/s/16zgudkrGlcUeTvEQpZ7Hsw?pwd=ds6a
提取码:ds6a
- [x]
#include <linux/init.h>
#include <lunux/kernel.h>
#include <linux/module.h>
/*This function is called when the module is leaded*/
int simple_init(void){
printk(KERN_INFO "Loading Module\n");
// LOOK careful double "" eat all the following text
return 0;
}
//this function is called when the module is removed//
void simple_exit(void){
printk(KER_INFO "Removing Module\n");
}
/*macros for registerin module entry and exit pints.*/
module_init(simple_init);
module_exit(simple_exit);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Simple Module");
MODULE_AUTHOR("SGG");
obj-m += simple.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
这段代码看起来是一个 Linux 内核模块的构建和编译过程。让我为你解释一下每个部分的作用:
1. `obj-m += simple.o`:
这一行将一个名为 `simple.o` 的目标文件添加到 `obj-m` 变量中。这指示构建系统在编译时将 `simple.o` 连接到内核模块中。
2. `all:`:
这是一个目标名称,表示默认的构建目标。也就是说,当你运行 `make` 命令而不指定目标时,它会执行这个目标下的命令。
3. `make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules`:
这条命令会调用 `make` 命令,进入到内核源码目录下(`/lib/modules/$(shell uname -r)/build`),并使用当前目录下的 Makefile(`M=$(PWD)`)来构建模块(`modules`)。这会编译和链接 `simple.o` 并生成内核模块文件。
4. `clean:`:
这是一个目标名称,用于清理构建过程产生的临时文件。
5. `make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean`:
这条命令会在内核源码目录下执行 `make` 命令,使用当前目录下的 Makefile(`M=$(PWD)`),并执行 `clean` 目标。这将清除构建过程中生成的临时文件和输出文件,以便进行干净的构建。
综合起来,这个 Makefile 的作用是编译和构建一个名为 `simple.o` 的内核模块,并提供了 `all` 和 `clean` 两个目标,分别用于构建和清理操作。执行 `make` 命令会默认执行 `all` 目标的命令,编译生成内核模块,而执行 `make clean` 命令会清理构建产生的临时文件和输出文件。