使用错误构建GCC 4.4.7(某些警告被视为错误)

时间:2019-04-21 07:02:46

标签: gcc compilation

configure flags: --prefix=/nix/store/l06rvwfzdvpabvgzzad4d3zy0pk8rd45-gcc-4.4.7 --disable-multilib --with-ppl=/nix/store/qkydvl67jamj9k2538a7b7467gqx073i-ppl-1.2 --with-cloog=/nix/store/zbn4xs136ccagbjvl7ka8br3f3w9w1gj-cloog-ppl-0.15.11 --with-gmp=/nix/store/7mrq5v4nnqfkv1ka7a0kdw9mzvqs5w3c-gmp-6.1.2 --with-mpfr=/nix/store/9429azblcx1y9apas3azxxd38imcmsy0-mpfr-4.0.2 --disable-libstdcxx-pch --without-included-gettext --with-system-zlib --enable-languages=c\,c++

部分日志:

../../gcc-4.4.7/libcpp/macro.c:1730:8: error: format not a string literal and no format arguments [-Werror=format-security]
        cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
        ^~~~~~~~~
../../gcc-4.4.7/libcpp/macro.c:1743:8: error: format not a string literal and no format arguments [-Werror=format-security]
        cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
        ^~~~~~~~~

我尝试添加CFLAGS=-Wno-error,但没有效果。我还捆绑使用sed来替换Werror=format-security,但它也失败了。

1 个答案:

答案 0 :(得分:0)

我的猜测是您使用的是较新版本的编译器(在4.4.7发布时尚不存在),并带有新的和增强的警告。

在某些时候,GCC编写的语言已从C更改为C ++。如果那是4.4之前的版本(不确定;必须检查),那么CFLAGS无效的原因很明显­-尝试设置CXXFLAGS

(为了保留一些历史记录:我最初发布的答案建议使用 CFLAGS_FOR_TARGET,这是错误的,因为libcpp不是目标库,因此是使用系统编译器而不是刚刚构建的库编译的。)