在Mountain Lion 10.8.4上为Nexus 7编译Android内核时遇到致命错误:找不到'elf.h'文件问题:
/Volumes/Android/WORKING_DIRECTORY/device/asus/grouper/tegra/
[derek@retina-mbp]$ make
scripts/kconfig/conf --silentoldconfig Kconfig
CHK include/linux/version.h
UPD include/linux/version.h
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
Generating include/generated/mach-types.h
CC kernel/bounds.s
GEN include/generated/bounds.h
CC arch/arm/kernel/asm-offsets.s
GEN include/generated/asm-offsets.h
CALL scripts/checksyscalls.sh
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
scripts/mod/mk_elfconfig.c:4:10: fatal error: 'elf.h' file not found
#include <elf.h>
^
1 error generated.
make[2]: *** [scripts/mod/mk_elfconfig] Error 1
make[1]: *** [scripts/mod] Error 2
make: *** [scripts] Error 2
有没有人知道如何解决这个问题,以便内核编译可以继续?
答案 0 :(得分:6)
我正在回答我自己的问题,因为我找到了缺少的elf.h文件的解决方法:
cd /Volumes/Android/WORKING_DIRECTORY/external/elfutils/libelf/
$ sudo cp -a elf.h /usr/include
现在在/ usr / include中有'elf.h'文件的副本,编译会持续一段时间,但随后会再次停止并出现其他错误:
arch/arm/mach-tegra/sleep.S: Assembler messages:
arch/arm/mach-tegra/sleep.S:240: Error: selected processor does not support ARM mode `smc #0'
make[1]: *** [arch/arm/mach-tegra/sleep.o] Error 1
make: *** [arch/arm/mach-tegra] Error 2
不知道如何处理这最后一个错误。
UPDATE :我放弃了尝试直接在OS X下编译Android内核。相反,我在VirtualBox上安装了64位Ubuntu,并按照此页面上的说明进行操作:
http://forum.xda-developers.com/showthread.php?t=1774035
除了正如我所说,我使用的是VirtualBox,而不是上面提到的VMWare Player。它工作得很好,我没有任何网络问题,并且能够轻松地将编译后的内核移回到OS X.
我还提到了这个页面来获取我的设备(石斑鱼)的正确内核源代码,预构建的gcc和make命令的语法(make tegra3_android_defconfig):
http://source.android.com/source/building-kernels.html
我希望这个答案可以节省一些时间。
答案 1 :(得分:2)
如果您仍然感兴趣,请查看http://algobardo.github.io/2014/10/Android-Kernel-MacOsX/,并告诉我您的Android系统是否可以重现。