【发布时间】:2016-02-25 15:12:37
【问题描述】:
我正在尝试从源代码编译 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/
如果有人可以帮助我,那就太好了。抱歉,如果这已经发布,我可以找到答案。
谢谢,
扎克
【问题讨论】:
-
似乎是错误的工具链。试试this 一个。像往常一样,请务必在构建之前正确设置
PATH、CROSS_COMPILE和ARCH环境变量。 -
@SamProtsenko 这个工具链将适用于 Android 内核。在内部文件中看起来与 NDK 中的工具链不同。另外,当您说设置 PATH、CROSS_COMPILE 和 ARCH 时,您是指在 .bashrc 文件中吗?对不起,我很抱歉,这是我第一次弄乱 Android 内核。感谢您的帮助
-
是的,这是 ARM 裸机 gcc 工具链,我很确定它适用于内核。至于变量——你可以通过
export命令在你的shell中设置它们,比如export PATH=......:$PATH等。然后在这个shell中运行make,这些变量将被内核Makefile使用。 -
您的 NDK 工具链也应该可以正常工作,可能是您没有正确配置它(我提到的那些变量)。请特别注意
PATH,它应该包含工具链的bin/目录的路径,然后是之前的PATH值。还要确保您从 NDK 中选择了正确的工具链(如果那里有多个工具链)。
标签: android linux-kernel arm64