elf.h file not found
拷贝 elf.h (二选一,两个都行)
- GitHub
- 修改
/Volumes/android/aosp/external/elfutils/libelf/elf.h
遇到了features.h 文件未找到的错误,就将#include <features.h>一行注释掉。
将elf.h拷贝到/usr/include或者/usr/local/include中,推荐放在后者,放在前者的话系统升级时会覆盖。目前发现libelf不需要。
arm-linux-androideabi-gcc: error: unrecognized command line option ‘-mgeneral-regs-only’
这个错误是我的交叉编译环境错了,我写了一个脚本来设置了。
|
|
‘vdso_offset_sigtramp’ undeclared (first use in this function)
In file included from arch/arm64/kernel/signal.c:36:0:
arch/arm64/kernel/signal.c: In function ‘setup_return’:
/Volumes/android/tegra/arch/arm64/include/asm/vdso.h:34:11: error: ‘vdso_offset_sigtramp’ undeclared (first use in this function)
(void *)(vdsooffset##name - VDSO_LBASE + (unsigned long)(base)); \
1.提前更改 arch/arm64/kernel/vdso/gen_vdso_offsets.sh 脚本
将如下一行
|
|
更改为:
|
|
也就是,"\t" to " "(whitespace)
ps: 如果已经执行过 make 了遇到了该错误,可以执行 make clean 清理生成的 h 文件,再重新编译
2.查看该源码文件,找到对应的头文件 vdso-offsets.h
该头文件是由上述脚本生成的,如果不想去改脚本,或者发现此时脚本已经没有效果(如果不会重新生成改头文件的话,确实没效果了已经),就直接更改错误的头文件吧。
|
|
更改kernel目录下的include/generated/vdso-offsets.h
将其中仅有的一行更改
|
|
====>>>
|
|
fatal error: dt-bindings/gpio/tegra-gpio.h: No such file or directory
In file included from arch/arm64/boot/dts/tegra132-flounder-xaxb.dts:3:0:
arch/arm64/boot/dts/tegra132-flounder-generic.dtsi:1:41: fatal error: dt-bindings/gpio/tegra-gpio.h: No such file or directory#include<dt-bindings/gpio/tegra-gpio.h>
compilation terminated.
make[1]: [arch/arm64/boot/dts/tegra132-flounder-xaxb.dtb] Error 1
make: [dtbs] Error 2
发现该文件的第一句 #include <dt-bindings/gpio/tegra-gpio.h>正是报错的地方
一般这些都是相对include路径的相对路径,通常需要找到 kernel 源码中该模块的 include 路径 arch/arm64/boot/dts/include
(先查找了 kernel 根目录下的 include 文件夹,发现没有要找的文件,是否这个应该优先找本模块下的?)
|
|
到 ../../../../../include/dt-bindings
查看发现了我们需要的头文件,所以猜测此处文件本应该是一个 symlink
动手解决之!
在当前的目录下:
|
|
继续编译。
|
|
至此,内核编译已经结束。
后续
参照官方链接的说明去你本机的目录中去找相应的预编译好的内核。
针对我的 Nexus 9 而言:
Device | Binary Location
——- | —————————
volantis | device/htc/flounder-kernel
查看你的 <AOSP>/device/<vendor>/xx-kernel 下显示的文件后缀名,将其备份(防止我们编译的内核启动不了)
将编译好的内核中具有同样扩展名的那个文件拷贝到该目录下。
对于 Nexus 9,拷贝 arch/arm64/boot/Image.gz-dtb
|
|
生成 bootimage