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