环境为:centos 6.7 64位。
Linux 大多采用 Makefile 文件进行编译,比如:内核模块。
关于内核模块的编译,简单的写法如下:
obj-m := [模块名].o
CURRENT_PATH := $(shell pwd) //指定内核模块源码路径
LINUX_KERNELS_PATH := /usr/src/kernels/$(uname -r) //指定使用的内核源码路径
all:
make -C $(LINUX_KERNELS_PATH) M=$(CURRENT_PATH) modules
clean:
make -C $(LINUX_KERNELS_PATH) M=$(CURRENT_PATH) clean
模块名可以和.c文件名一致。当存在多个目标文件时,写法可如下:
obj-m := modules.o
modules.o := [模块1].o [模块2].o ……
(注意:obj和-m之间没有空格)
all 和 clean 分别表示内核模块的编译和内核模块的清除。(注意:make 前需按 TAB 键)
执行 make 开始编译,出错说明:
编译成功如图所示:
内核模块中的 printk 打印,可通过命令:(sudo) tail (-n 20) /var/log/messages 来查看。
内核模块的 makefile 虽然方便,但书写时需按照格式来完成。