gcc unbekannte Befehlszeilenoptionen '-V' und '-qversion' mit autoconf

23046
syrinx

Beim Kompilieren mit gcc 4.7.2 und autoconf 2.69 erhalte ich routinemäßig Ergebnisse wie diese in configure.log. Beispiel:

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 

Die Kompilierung verläuft erfolgreich, aber ich frage mich, warum Autoconf auf Befehlszeilen prüft, die von gcc nicht unterstützt werden. Ist das für andere Compiler?

9

2 Antworten auf die Frage

9
steady rain

Dies zitierend:

gcc -V ist eine Möglichkeit, eine bestimmte gcc-Version auszuwählen, wenn Sie mehr als eine haben. Dies ist jedoch ein Lockvogel: configure durchläuft eine Reihe von Optionen (--version -v -V usw.), um sicherzustellen, dass es protokollieren kann die Version des C-Compilers, sei es gcc oder etwas anderes.

Dies zitierend:

gcc verwendete eine -V-Option für Versionsberichte. Es verwendet jetzt -v und bietet die Konfigurationsoptionen, die beim Erstellen des Compilers verwendet wurden.

Ihr Paket ist etwas veraltet und spiegelt diese Tatsache nicht wider.

Übrigens wurde die Option -qversion in die -v ...

Dies zitierend:

In einigen Versionen von gcc sagt die Option -V, dass eine angegebene Version des Compilers verwendet werden soll - es ist jedoch ein Argument erforderlich. Es ist hier dokumentiert. Die Option scheint irgendwann zwischen 4.5.4 und 4.6.4 entfernt worden zu sein.

was darauf verweist:

0
Oleg Kokorin

Moderne Autoconf-Version 2.69 kann mit der folgenden erweiterten Methode zur Extraktion von Compilerinformationen verwendet werden:

# Provide some information about the compiler.  $as_echo "$as_me:$: 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:$: $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:$: \$? = $ac_status" >&5  if test $ac_status = 0; then break; fi}  done  

Es wurde bereits angenommen, um sowohl moderne als auch ältere Versionsextraktionsflags auszuprobieren. Der Fix befindet sich in der letzten Zeile, so dass der Test nach dem ersten Erfolg übersprungen werden kann.