Makefile编译选项etc
-save-temps选项:
告诉gcc编译器不要删除临时文件。
1)a.i : 是经过C预处理程序(CPP)处理之后的文件,这个就是我们以后工作的基础
2)a.s: 是经过汇编器处理之后产生的汇编代码
3)a.o: 是编译器产生的目标代码
4)a.out: 是编译器默认产生的可执行程序。
Makefile 中 echo 和@echo的区别
echo: 会在shell中显示echo这条命令和后面要输出的内容
@echo: 不会显示echo这条命令,只会显示后面要输出的内容
例如:
echo “hello” 输出为:echo "hello" hello
@echo "hello" 输出为:hello
make在执行命令之前会把要执行的命令进行输出,称之为回显
如果要执行的命令以字符@开始,则不会回显,
$(warning 1DVD_SERVICE=$(DVD_SERVICE))
$(warning 1SECURITY=$(SECURITY))
$(warning 1ST40_IMPORTS is $(ST40_IMPORTS)) 变量名,一定要加括号。不加的话,可以发现前面都无法输出变量的值。
内核模块的makefile
obj-m += lkm_example.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
test:
sudo dmesg -C
sudo insmod lkm_example.ko
sudo rmmod lkm_example.ko
dmesg