我正在运行 Ubuntu 14.04。我的机器上安装了 GCC 4.9。我尝试编译 Android 内核,但出现以下错误:
Makefile:660: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
CC kernel/bounds.s
arm-linux-gnueabihf-gcc: error: unrecognized command line option ‘-fstack-protector-strong’
make[1]: *** [kernel/bounds.s] Error 1
make: *** [prepare0] Error 2
有什么方法可以解决这个问题?
答案1
您需要编辑我们正在处理的 kernel/rpi 目录中的 MakeFile。请参阅:“生成文件:660:无法使用 CONFIG_CC_STACKPROTECTOR_STRONG:编译器不支持 -fstack-protector-strong”
转到第 660 行并注释掉与 CONFIG_CC_STACKPROTECTOR_STRONG 相关的代码块,然后重试:)
答案2
我已经解决了这个问题。至于输出Makefile:660: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
,编译器不支持 -fstack-protector-strong。
在编译Android内核时,CROSS_COMPILE
env设置了我们使用的gcc工具链。因此,您可以将env设置为AOSP gcc工具链位置,也可以下载新的工具链并将env设置为它。
例如:
# install toolchain,default in /usr/bin
sudo apt-get install gcc-aarch64-linux-gnu gcc-arm-linux-gnueab
export CROSS_COMPILE=/usr/bin/aarch64-linux-gnu-
或者
export CROSS_COMPILE=aarch64-linux-android-
export PATH=~/data/AOSP/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin:$PATH