各种问题解决
1.linux/compiler-gcc11.h:没有那个文件或目录
分析:查看include/linux目录下只有compiler-gcc4,compiler-gcc5,没有compiler-gcc11,推断是由于gcc版本过高(此处为11)导致的。
解决方法:
法一:更换gcc版本(这里更换gcc版本为7,其实得更换5)(ubuntu22如何下载gcc-5)
补充:换成gcc5之后会引发新的问题,可以使用方法二三解决。
#安装gcc-7 / g++-7
sudo apt-get update
sudo apt-get install gcc-7
sudo apt-get install g++-7、
#将需要的版本添加到 update-alternatives 中
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
#手动配置 update-alternatives
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
#删除
sudo update-alternatives --remove gcc /usr/bin/gcc-7
法二:在内核文件夹中include/linux
目录下找到compiler-gcc3.h
或者compiler-gcc4.h
等文件,将其中一个重命名为compiler-gcc11.h
(它没找到的文件)。
法三:在新的内核源码中拷贝一个compiler-gcc11.h
到内核文件夹include/linux
目录下
2.kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
原因是gcc-5自己加了个fpie 所以修改Makefile
文件,在后面加个这个-fno-pie
3.arch/x86/vdso/vdso32/note.S:1:0: sorry, unimplemented: -mfentry isn’t supported for 32-bit in combination with -fpic
同样Makefile
文件后加这个-fno-pic