linux 内核模块编译,适配GCC版本
有时候内核源码树外的内核模块编译时,需要适配多个版本linux电脑的多个GCC版本,如果是同一套代码,在使用的额外编译参数时,会导致低版本不认识高版本GCC的参数。这样在移植上就会产生问题。
可用如下方法在源码Makefile中解决。
GCC_VER_GTE5 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 5) GCC_VER_GTE8 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 8) GCC_VER_GTE11 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 11) ifeq ($(GCC_VER_GTE5),1) ccflags-y += -Wno-discarded-qualifiers endif ifeq ($(GCC_VER_GTE8),1) ccflags-y += -Wno-missing-attributes -Wno-frame-larger-than -Wno-missing-prototypes -Wno-missing-declarations endif ifeq ($(GCC_VER_GTE11),1) ccflags-y += -Wno-zero-length-bounds endif