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

Error while trying to compile android kernel in ubuntu

我正在尝试从源代码编译一个 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 64 位。

这是我拥有 NDK 和内核的地方:

NDK ---- /home/livlogik/android/ndk/

内核----/home/livlogik/android/kernel/H901bk_L_Kernel/

如果有人能帮助我,那就太好了。抱歉,如果已经发布,我可以找到答案。

谢谢,

扎克

从构建错误信息可以看出:

drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c:20:27: fatal error: ./mh1/msm_mh1.h: No such file or directory

#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 文件。

更新

在评论中回答您的问题:

Is there any way to make it compress into a zImage?

来自Documentation/arm64/booting.txt

The AArch64 kernel does not currently provide a decompressor and therefore requires decompression (gzip etc.) to be performed by the boot loader if a compressed Image target (e.g. Image.gz) is used. For bootloaders that do not implement this requirement, the uncompressed Image target is available instead.

基本上 zImage 只是压缩和自解压 Image。所以 zImage 文件由开始解压 gzip 存档的程序组成,然后是 gzipped Image,当内核是 运行 时,引导加载程序会自行解压(hense "self-extracted" 术语)然后开始 运行ning.

...So I can make it flashable

在 arm64 的情况下,您没有 zImage,因此您很可能需要使用 Image 文件(其作用相同,但大小更大)。您可以从 Image 文件创建 boot.img 并构建 AFS ramdisk(使用 mkbootimg 工具),然后只需执行 fastboot flash boot boot.img。例如,请参阅 this 文档。当然,对于您的平台,有些事情可能会有所不同,因此请尝试查找适合您平台的说明。

您必须安装正确的工具链: 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