5

在 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

有谁知道如何解决这个问题,以便内核编译可以继续?

4

2 回答 2

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

不过,不确定如何处理最后一个错误。

更新:我放弃了尝试直接在 OS X 下编译 Android 内核。相反,我在 VirtualBox 上安装了 64 位 Ubuntu,并按照此页面上的说明进行操作:

http://forum.xda-developers.com/showthread.php?t=1774035

除了如我所说,我使用了 VirtualBox 而不是 VMWare Player,正如上面页面所建议的那样。它工作得很好,我在网络方面没有任何问题,并且能够通过 ssh 进入 Ubuntu 以轻松地将已编译的内核移回 OS X。

我还参考了这个页面来为我的设备(grouper)获取正确的内核源代码、预构建的 gcc 和 make 命令的语法(make tegra3_android_defconfig):

http://source.android.com/source/building-kernels.html

我希望这个答案可以节省一些时间。

于 2013-10-18T05:53:40.077 回答
2

如果您仍然感兴趣,请查看http://algobardo.github.io/2014/10/Android-Kernel-MacOsX/并让我知道它是否可以在您的系统上使用您的 android 版本重现。

于 2015-01-19T13:58:43.930 回答