【问题标题】:Error while building linux kernel 3.8.11 - unrecognized command line option "-fstack-protector"构建 linux 内核 3.8.11 时出错 - 无法识别的命令行选项“-fstack-protector”
【发布时间】:2013-06-16 12:29:50
【问题描述】:

我正在尝试为 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

有人可以帮我绕过这个问题吗?迁移到新的工具链很困难,因为这是供应商提供的最新工具链。我在内核 Makefile 的 KBUILD_CFLAGS 中看到一个选项,用于 fno-stack-protector,但我猜它没有任何好处。或者我没有正确使用它。

我也只是使用默认的内核配置,只是make menuconfig并保存为.config,还没有板相关的配置。我想要的只是能够编译这个内核以开始使用。

【问题讨论】:

    标签: gcc linux-kernel kernel gcc4


    【解决方案1】:

    想通了。在配置内核时,在内核功能下 ---> 禁用“启用 -fstack-protector 缓冲区溢出检测”修复了这个问题。这是因为我的工具链 gcc 4.0.1 没有 -fstack-protection 功能。

    【讨论】:

    • 使用 4.4 内核,我在“常规设置”下找到了这个。我建议对 CONFIG_CC_STACKPROTECTOR_STRONG 使用搜索功能“/”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2018-06-07
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    相关资源
    最近更新 更多