簡體   English   中英

嘗試在 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/

如果有人可以幫助我,那就太好了。 抱歉,如果這已經發布了,我可以找到答案。

謝謝,

扎克

從構建錯誤消息可以看出:

驅動程序/媒體/平台/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM