gcc:忽略无法识别的选项

Rol*_*lle 5 gcc makefile

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

Joh*_*ohn 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 ...
Run Code Online (Sandbox Code Playgroud)

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

约翰