gcc opzioni della riga di comando non riconosciute '-V' e '-qversion' con autoconf


15

Durante la compilazione con gcc 4.7.2 e autoconf 2.69, ottengo regolarmente risultati come questi in configure.log. Esempio:

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

La compilazione procede correttamente, ma mi chiedo perché autoconf stia testando le righe di comando che gcc non supporta. È per altri compilatori?

Risposte:


11

Citando questo:

gcc -V è un modo per selezionare una versione specifica di gcc quando ne hai più di una, ma questo è un richiamo qui: configura sta iterando attraverso una serie di opzioni (--version -v -V ecc.) per assicurarsi che possa accedere la versione del compilatore C, sia esso gcc o qualcos'altro.

Citando questo:

gcc aveva un'opzione -V per i report delle versioni. Ora utilizza -v e fornisce le opzioni di configurazione utilizzate al momento della compilazione del compilatore.

Il pacchetto è un po 'datato e non riflette questo fatto.

A proposito, l'opzione -qversion è stata fusa in -v ...

Citando questo:

Su alcune versioni di gcc, l'opzione -V gli dice di usare una versione specificata del compilatore, ma richiede un argomento. È documentato qui. L'opzione sembra essere stata rimossa da qualche tempo tra 4.5.4 e 4.6.4.

che fa riferimento a questo:


1

La versione 2.69 di autoconf moderna potrebbe essere utilizzata con il seguente metodo di estrazione delle informazioni del compilatore esteso:

# 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

È già stato adattato per provare flag di estrazione di versioni moderne e legacy. La correzione è all'ultima riga, consentendo di saltare i test dopo il 1 ° successo.


"G-Man dice 'Reinstate Monica'" ruba la mia modifica. Vergognatevi.
Okwap
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.