![](/img/trans.png)
[英]INSTALLED_KERNEL_HEADERS missing while trying to compile ROM for 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/
如果有人可以幫助我,那就太好了。 抱歉,如果這已經發布了,我可以找到答案。
謝謝,
扎克
從構建錯誤消息可以看出:
驅動程序/媒體/平台/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 內核當前不提供解壓縮器,因此如果使用壓縮的
Image
目標(例如Image.gz
),則需要由引導加載程序執行解壓縮(gzip 等)。 對於未實現此要求的引導加載程序,可以使用未壓縮的Image
目標。
基本上zImage
只是 gzipped 和自解壓Image
。 所以zImage
文件首先由用於解包 gzip 存檔的程序組成,然后是 gzip 壓縮的Image
,當內核由引導加載程序運行時,它會自行解包(所謂的“自解壓”術語),然后開始運行。
...所以我可以讓它可閃光
在 arm64 的情況下,您沒有zImage
,因此很可能您需要使用Image
文件(其作用相同,但只有其大小更大)。 您可以從Image
文件創建boot.img
並構建 AFS ramdisk(使用mkbootimg
工具),然后執行fastboot flash boot boot.img
。 例如,請參閱此文檔。 當然,對於您的平台,有些事情可能會有所不同,因此請嘗試查找適用於您平台的說明。
您必須安裝正確的工具鏈: 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.