首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交叉编译内核

交叉编译内核
EN

Stack Overflow用户
提问于 2017-03-20 02:59:10
回答 1查看 1.7K关注 0票数 2

我正试图实现类似于这个https://github.com/volatilityfoundation/volatility/wiki/Android#initialize-the-android-build-environment的东西。下面是我正在使用的环境:

Ubuntu14.04,AndroidStudio2.3,Android r14,模拟器-api22。

我在步骤交叉编译内核时遇到了困难。我的目标是金鱼内核3.10以下是我遵循的步骤。任何帮助都会很感激的。

方法1

代码语言:javascript
复制
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=~/android-ndk/android-ndk-r14/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-

本教程建议我们必须将下一个命令运行为

代码语言:javascript
复制
make goldfish_armv7_defconfig

但是,当我检查目录“android/arch/arm/ there /”时,那里没有这样的配置文件。一些教程建议我们只需从内核2.6复制和粘贴文件,所以我做了同样的事情,然后添加

代码语言:javascript
复制
CONFIG_MODULES=y
CONFIG_MODULES_UNLOAD=y
CONFIG_MODULES_FORCE_UNLOAD=y

但更远的

代码语言:javascript
复制
$ make

错误结果:

代码语言:javascript
复制
arch/arm/mm/mmu.c: In function 'build_mem_type_table':
arch/arm/mm/mmu.c:470:18: error: 'L_PTE_MT_VECTORS' undeclared (first use in this function)
   vecs_pgprot |= L_PTE_MT_VECTORS;
                  ^
arch/arm/mm/mmu.c:470:18: note: each undeclared identifier is reported only once for each function it appears in
arch/arm/mm/mmu.c: At top level:
arch/arm/mm/mmu.c:637:23: warning: 'early_pte_alloc_and_install' defined but not used [-Wunused-function]
 static pte_t * __init early_pte_alloc_and_install(pmd_t *pmd,
                       ^
make[1]: *** [arch/arm/mm/mmu.o] Error 1
make: *** [arch/arm/mm] Error

methos 2

一切都与方法1相同,我只是更改了单变量。

代码语言:javascript
复制
export ARCH=arm64

然后跑

代码语言:javascript
复制
make ranchu_deconfig

但我也犯了同样的错误。

方法3

代码语言:javascript
复制
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=~/android-ndk/android-ndk-r14/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
$ make ranchu_defconfig
$ vim .config # added this to .config file

CONFIG_MODULES=y
CONFIG_MODULES_UNLOAD=y
CONFIG_MODULES_FORCE_UNLOAD=y

$ make

此命令成功运行:zImage发现

但是,当我使用下面的命令运行模拟器时

代码语言:javascript
复制
root@ubuntu:~/Android/Sdk/tools# ./emulator -avd Nexus5x22 -kernel ~/android-source2/android-source/arch/arm/boot/zImage -show-kernel –verbose

我得到了"Linux内核太老不能运行ram磁盘“的错误:ram磁盘错误

EN

回答 1

Stack Overflow用户

发布于 2017-05-07 01:09:09

谷歌的Android内核被搞砸了。他们在返回移植这个L_PTE_MT_VECTORS时忘记了定义补丁

解决方案是将其添加为这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42895145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档