尝试在ubuntu中编译android内核时出错

时间:2016-02-25 15:12:37

标签: android linux-kernel arm64

我正在尝试从源代码编译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 /

如果有人可以帮助我那会很棒。对不起,如果已经发布,我可以找到答案。

谢谢,

扎克

2 个答案:

答案 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