Options de ligne de commande gcc non reconnues '-V' et '-qversion' avec autoconf

15

Lors de la compilation avec gcc 4.7.2 et autoconf 2.69, j'obtiens régulièrement des résultats tels que ceux-ci dans configure.log. Exemple:

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 compilation se déroule avec succès, mais je me demande pourquoi autoconf teste les lignes de commande que gcc ne prend pas en charge. Est-ce pour d'autres compilateurs?

syrinx
la source

Réponses:

11

Citant ceci:

gcc -V est un moyen de sélectionner une version spécifique de gcc lorsque vous en avez plusieurs, c'est un leurre ici cependant: configure est en train d'itérer à travers un ensemble d'options (--version -v -V etc.) pour vous assurer qu'il peut se connecter la version du compilateur C, que ce soit gcc ou autre chose.

Citant ceci:

gcc avait auparavant une option -V pour les rapports de version. Il utilise désormais -v et fournit les options de configuration utilisées lors de la construction du compilateur.

Votre colis est un peu daté et ne reflète pas ce fait.

BTW, l'option -qversion a été fusionnée dans l'option -v ...

Citant ceci:

Sur certaines versions de gcc, l'option -V lui indique d'utiliser une version spécifiée du compilateur - mais elle nécessite un argument. C'est documenté ici. L'option semble avoir été supprimée quelque temps entre 4.5.4 et 4.6.4.

qui fait référence à ceci:

pluie régulière
la source
1

La version 2.69 de la configuration automatique moderne pourrait être utilisée avec la méthode d'extraction d'informations du compilateur étendue suivante:

# 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

Il est déjà adapté pour essayer des indicateurs d'extraction de versions modernes et anciennes. Le correctif est à la toute dernière ligne, permettant de sauter les tests après le 1er succès.

Oleg Kokorin
la source
"G-Man dit 'Réinstalle Monica'" vole mon montage. Honte à toi.
okwap