天天看点

gcc与linux内核,linux内核版本及其编译的gcc版本

以前不知道,现在用crosstool-ng编译了5.2.0版本的arm-linu-gcc,再编译之前的linux-3.15.4发现会提示

include/linux/compiler-gcc.h:106:30: fatal error: linux/compiler-gcc5.h: No such file or directory

ls include/linux/compiler-gcc* 就会得到

include/linux/compiler-gcc3.h

include/linux/compiler-gcc4.h

include/linux/compiler-gcc.h

但是呢,我解压linux-4.3,然后ls include/linux/compiler-gcc*却只得到

include/linux/compiler-gcc.h

然后我又在板子提供的内核(2.6.23)源码下include/linux/compiler-gcc*得到

include/linux/compiler-gcc3.h

include/linux/compiler-gcc4.h

include/linux/compiler-gcc5.h

include/linux/compiler-gcc.h

按版本来说,2.6.23是2007年出来的,不可能支持到gcc5,那怎么会有?

Any kernel older than 3.18 will not compile using gcc 5. Use an older compiler.

3.18是2014年才出来的,

看了一下include/linux/compiler-gcc5.h,其实就是include/linux/compiler-gcc.h

所以要做的就是编译gcc用的linux内核下的include/linux/compiler-gcc.h复制过来重命名为

include/linux/compiler-gcc5.h即可