web-dev-qa-db-ja.com

Androidカーネル 'fstack-protector-strong not supported`エラー

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

これを解決できる方法はありますか?

2
Kush

作業中のkernel/rpiディレクトリでMakeFileを編集する必要があります。「Makefile:660: CONFIG_CC_STACKPROTECTOR_STRONGを使用できません:-fstack-protector-strongはコンパイラでサポートされていません」を参照してください。

660行目に進み、CONFIG_CC_STACKPROTECTOR_STRONGに関連するコードブロックをコメントアウトしてから、もう一度やり直してください:)

1
AvY

この問題を解決しました。出力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
0
ycx think