如何让Linux内核编译驱动模块时支持C99
嵌入式中使用的交叉编译器在编译时加上–std=c99选项可以支持c99
arm-linux-gnueabihf-gcc test.c -o test --std=c99
但在让内核编译驱动模块的时候并没有使用上述语句的机会,但是可以在内核模块的Makefile文件中加入下面这句话让其支持c99
ccflags-y := -std=gnu99 -Wno-declaration-after-statement
内核模块Makefile示例如下(源文件test.c):
KERNEL_DIR := /home/xxx/xxx
CURRENT_DIR := $(shell pwd)
obj-m := test.o
ccflags-y := -std=gnu99 -Wno-declaration-after-statement
kernel_module:
$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules
.PHONY:clean
clean:
$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
|