2012-09-25 164 views
3

有沒有辦法讓gcc忽略一個無效的選項,而不是用「unrecongized option」死掉?原因是我想使用僅適用於更高版本的gcc(-static-libstdC++)的選項,但它也應該在較早的編譯器上編譯。我可以檢查生成文件中的gcc版本,但它有點難看。gcc:忽略無法識別的選項

回答

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 ... 

(免責聲明:我不知道哪個版本首先採用靜態的libstdC++,4.6.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) 
相關問題