gcc nierozpoznane opcje wiersza poleceń „-V” i „-qversion” z autoconf

16

Podczas kompilacji z gcc 4.7.2 i autoconf 2.69 rutynowo otrzymuję wyniki takie jak te w pliku config.log. Przykład:

configure:3091: $? = 0 
configure:3080: gcc -V >&5 
gcc: error: unrecognized command line option '-V' 
gcc: fatal error: no input files compilation terminated. 
configure:3091: $? = 1 
configure:3080: gcc -qversion >&5 
gcc: error: unrecognized command line option '-qversion' 
gcc: fatal error: no input files compilation terminated. 
configure:3091: $? = 1 
configure:3111: checking whether the C compiler works 
configure:3133: gcc -march=x86-64 -mtune=generic -Os -pipe -Wl,-O1 conftest.c >&5
configure:3137: $? = 0 
configure:3185: result: yes

Kompilacja przebiega pomyślnie, ale zastanawiam się, dlaczego autoconf testuje wiersze poleceń, których gcc nie obsługuje. Czy dotyczy to innych kompilatorów?

syrinx
źródło

Odpowiedzi:

11

Powołując się na to:

gcc -V to sposób na wybranie konkretnej wersji gcc, gdy masz więcej niż jedną, jest to jednak wabik: config konfiguruje iterację przez zestaw opcji (--version -v -V itp.), aby upewnić się, że może się zalogować wersja kompilatora C, czy to gcc, czy coś innego.

Powołując się na to:

gcc miał kiedyś opcję -V dla raportów wersji. Teraz używa -v i udostępnia opcje konfiguracji używane podczas kompilacji.

Twoja paczka jest trochę przestarzała i nie odzwierciedla tego faktu.

BTW, opcja -qversion została połączona z opcją -v ...

Powołując się na to:

W niektórych wersjach gcc opcja -V nakazuje użycie określonej wersji kompilatora - ale wymaga argumentu. Jest to udokumentowane tutaj. Wygląda na to, że opcja została usunięta przez jakiś czas między 4.5.4 a 4.6.4.

który odnosi się do tego:

stały deszcz
źródło
1

Nowoczesna wersja autoconf 2.69 może być używana z następującą metodą rozszerzonej ekstrakcji informacji kompilatora:

# Provide some information about the compiler.
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
for ac_option in --version -v -V -qversion; do
  { { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
  ac_status=$?
  if test -s conftest.err; then
    sed '10a\
... rest of stderr output deleted ...
         10q' conftest.err >conftest.er1
    cat conftest.er1 >&5
    rm -f conftest.er1 conftest.err
  fi
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  if test $ac_status = 0; then break; fi}
done

Jest już przystosowany do wypróbowywania flag ekstrakcji zarówno współczesnej, jak i starszej wersji. Poprawka jest na ostatniej linii, pozwalając pominąć testowanie po 1. sukcesie.

Oleg Kokorin
źródło
„G-Man mówi„ Przywróć Monikę ”” ukraść moją edycję. Wstydź się.
okwap