Android 内核‘fstack-protector-strong 不受支持’错误

Android 内核‘fstack-protector-strong 不受支持’错误

我正在运行 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_COMPILEenv设置了我们使用的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

相关内容