我在编译内核调度程序进行测试时遇到问题
编译错误
linux-2.6.32-rc3/include/linux/compiler-gcc.h:86:30: fatal error: linux/compiler-gcc5.h: No such file or directory
我收到此错误是因为内核太旧吗?
核心
uname -r
4.1.0-3-generic
海湾合作委员会
gcc --version
gcc-5.real (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
那么,如果这是编译错误的原因 - 有哪些解决方案可用?例如,我应该更新内核吗?我该怎么做?或者回归到早期版本的 gcc?其他建议?
答案1
任何早于 3.18 的内核都无法使用 gcc 5 进行编译。请使用较旧的编译器。
答案2
可以安装 gcc-4.9 来编译 3.xx 内核。
但接下来的问题是:“如何切换到gcc-4.9进行内核编译?”
反而,更简单的答案就在这里- 只需将丢失的文件下载到include/linux
文件夹中
不幸的是 gcc5 不喜欢“外部内联grep -sRl "extern inline" .|xargs sed -i -e "s/extern inline/inline/g"
“ 完全构建,因此在继续进行任何编译之前,您必须继续处理所有内核源代码
答案3
您没有内核源代码。编译器正在寻找该头文件。
此链接将为您提供一个内核源代码树版本,该版本应该与您正在寻找的内容大致相似。
https://cdn.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.71.tar.xz
答案4
简单地说:获取旧版本的 GCC,然后make CC=gcc-4.9
在内核目录中使用4.9
gcc 版本进行编译。