构建模块程序的makefile中的obj-m,obj-y,obj-n,obj-
obj-y:将目标文件加入即将添入Linux内核vmlinux的文件列表中
obj-m:将目标文件加入作为模块的文件列表中
obj-n,obj-的文件列表被忽略
模块编译的makefile文件中:
make –C $(KDIR) M=$(shell pwd) modules
其中-C选项是在执行make前跳转到内核源代码树的目录中,该目录包含了linux内核的顶层makefile,M=$(shell pwd)选项使得在生成modules前再跳转回模块源代码目录
gcc的5个选项,-c、-o 、-I、-E、-S
-E 只对源文件进行预处理,生成.i后缀名的文件,预处理只是简单的宏替换,将头文件插入源代码中
-S 对预处理后的文件进行汇编,生成.s后缀名的文件
-c 只产生目标文件,不连接,将汇编后的.s文件生成二进制文件
-o 指定目标文件
-I 指定头文件的目录
gcc的编译过程包括预处理、编译、汇编、链接。