我正在尝试构建用于arm架构的3.8.11内核,并且使用我的评估板供应商提供的工具链用于arm sbc(技术系统)。
我在使用我的arm工具链编译默认的vanilla内核3.8.11时看到了这个问题。(我知道这不会启动我的主板,但我现在只是尝试编译)我看到了一些-fstack-protector
的问题以下是我的错误日志
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中看到一个选项,但我猜它没有任何好处。或者我没有正确使用它。
我也只是使用默认的内核配置,只需make menuconfig并另存为.config,还没有与电路板相关的配置。我想要的只是为了能够编译这个内核来开始。
答案 0 :(得分:0)
想出来。在配置内核时,在内核功能下--->禁用“启用-fstack-protector缓冲区溢出检测”可解决此问题。这是因为我的工具链gcc 4.0.1没有-fstack-protection功能。