【问题标题】:gcc: ignore unrecognized optiongcc:忽略无法识别的选项
【发布时间】:2012-09-17 02:06:21
【问题描述】:

有没有办法让 gcc 忽略一个无效的选项,而不是死于“unrecongized option”?原因是我想使用仅在更高版本的 gcc (-static-libstdc++) 中可用的选项,但它也应该在旧编译器上编译。我可以在 makefile 中检查 gcc 版本,但它有点难看。

【问题讨论】:

    标签: gcc makefile


    【解决方案1】:

    没有,但你可以根据 gcc 版本设置标志如下:

    version=`gcc --version | head -1 | cut -d ' ' -f3`
    
    if [ `echo -e "$version\n4.6.1" | sort -V -C; echo $?` == 0 ]; then 
        flags = -static-libstdc++;
    fi
    
    gcc $flags ...
    

    (免责声明:我不确定哪个版本首先使用 static-libstdc++,4.6.1 只是一个猜测)。

    约翰

    【讨论】:

      【解决方案2】:

      您可以运行 gcc 并检查它是否接受标志:

      STATIC_LIBCPP_FLAG := $(shell if gcc -static-libstdc++ --version 2>&1 | grep -q 'unrecognized option'; then true; else echo -static-libstdc++; fi)
      
      CFLAGS += $(STATIC_LIBCPP_FLAG)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多