1

arm アーキテクチャ用の 3.8.11 カーネルを構築しようとしており、arm sbc (技術システム) 用の評価ボードのベンダーが提供するツール チェーンを使用しています。

Arm ツール チェーンを使用してデフォルトのバニラ カーネル 3.8.11 をコンパイルしているときに、この問題が発生します。 fstack-プロテクター

以下は私のエラーログです

   make -j4 zImage

  CHK     include/generated/uapi/linux/version.h
  HOSTCC  scripts/basic/fixdep
  CHK     include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
  CC      scripts/mod/empty.o
  HOSTCC  scripts/dtc/checks.o
  CC      kernel/bounds.s
cc1: error: unrecognized command line option "-fstack-protector"
make[2]: *** [scripts/mod/empty.o] Error 1
make[1]: *** [scripts/mod] Error 2
make[1]: *** Waiting for unfinished jobs....
  HOSTCC  scripts/dtc/data.o
  HOSTCC  scripts/genksyms/genksyms.o
cc1: error: unrecognized command line option "-fstack-protector"
make[1]: *** [kernel/bounds.s] Error 1
make: *** [prepare0] Error 2
make: *** Waiting for unfinished jobs....

gcc 4.0.1 ツールチェーンを使用しています

arm-unknown-linux-gnu-gcc -v
Using built-in specs.
Target: arm-unknown-linux-gnu
Configured with: /data/buytenh/x/crosstool-0.38/build/arm-unknown-linux-gnu/gcc-4.0.1-glibc-2.3.5/gcc-4.0.1/configure --target=arm-unknown-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/opt/crosstool/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu --with-headers=/opt/crosstool/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/arm-unknown-linux-gnu/include --with-local-prefix=/opt/crosstool/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/arm-unknown-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.0.1

誰かがこの問題を回避するのを手伝ってくれませんか? これはベンダーが提供する最新のツール チェーンであるため、新しいツール チェーンへの移行は困難です。fno-stack-protector のカーネル Makefile の KBUILD_CFLAGS にオプションがありますが、うまく機能していないか、正しく使用していません。

また、デフォルトのカーネル構成を使用しているだけで、menuconfig を作成して .config として保存します。ボード関連の構成はまだありません。私が望むのは、このカーネルをコンパイルして開始できることだけです。

4

1 に答える 1

0

理解した。カーネルの構成中に、カーネル機能の下で ---> 「-fstack-protector バッファー オーバーフロー検出を有効にする」を無効にすると、この問題が修正されました。これは、ツールチェーン gcc 4.0.1 に -fstack-protection 機能がなかったためです。

于 2013-06-19T23:29:40.697 に答える