gcc:忽略无法识别的选项

时间:2012-09-25 14:17:59

标签: gcc makefile

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

2 个答案:

答案 0 :(得分: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只是猜测。)

约翰

答案 1 :(得分:1)

您可以运行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)