我正在尝试从源代码编译Android内核,我相信我已经下载了所有正确的软件包,但出于某种原因我收到了这个错误--->
arm-linux-androideabi-gcc: error: unrecognized command line option '-mgeneral-regs-only'
/home/livlogik/android/kernel/H901BK_L_Kernel/./Kbuild:35: recipe for target 'kernel/bounds.s' failed
make[1]: *** [kernel/bounds.s] Error 1
Makefile:858: recipe for target 'prepare0' failed
make: *** [prepare0] Error 2
我有最新的NDK,如果这有帮助,我会使用Ubuntu 15.10 64bit。
这是我拥有NDK和内核的地方--->
NDK ---- / home / livlogik / android / ndk /
内核 ---- / home / livlogik / android / kernel / H901bk_L_Kernel /
如果有人可以帮助我那会很棒。对不起,如果已经发布,我可以找到答案。
谢谢,
扎克
答案 0 :(得分:2)
从构建错误消息中可以看出:
drivers / media / platform / msm / camera_v2 / sensor / msm_sensor.c :20:27:致命错误:./ mh1 / msm_mh1.h:没有此类文件或目录
#include< ./ mh1 / msm_mh1.h>
编译器无法找到msm_mh1.h
文件。这是因为为#include
指令指定的路径不正确。最有可能是错字:而./
应该是../
。
要解决该错误,请在drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c
文件中更改此行:
#include <./mh1/msm_mh1.h>
到这一行
#include "../mh1/msm_mh1.h"
在此make
命令之后应该可以正常工作。此外,内核映像文件将在arch/arm64/boot
处可用,并且不是文档中所述的zImage
,它实际上是Image.gz
。未压缩的内核映像为Image
文件。
在评论中回答你的问题:
有没有办法让它压缩成zImage?
来自Documentation/arm64/booting.txt:
AArch64内核目前不提供解压缩器 因此需要通过引导执行解压缩(gzip等) 如果使用压缩的
Image
目标(例如Image.gz
),则加载程序。对于 未实现此要求的引导加载程序,未压缩 可以使用Image
目标。
基本上zImage
只是gzip和自解压Image
。所以zImage
文件包含用于在开始时解压缩gzip存档的程序,然后是gzipped Image
,当内核由bootloader运行时,它自行解压缩(hense“self-extracted”term)然后开始运行
...所以我可以让它可以闪烁
对于arm64,你没有zImage
,所以很可能你需要使用Image
文件(它的行为方式相同,但只有它的大小更大)。您可以从boot.img
文件创建Image
并构建AFS ramdisk(使用mkbootimg
工具),然后执行fastboot flash boot boot.img
。例如,请参阅this文档。当然,对于您的平台,一些事情可能会有所不同,因此请尝试查找适合您平台的说明。
答案 1 :(得分:0)
您必须安装正确的工具链:
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9
并正确配置Makefile
错误的工具链在
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-android-4.9