Opções de linha de comando não reconhecidas pelo gcc '-V' e '-qversion' com autoconf


15

Ao compilar com o gcc 4.7.2 e o autoconf 2.69, estou obtendo rotineiramente resultados como estes no configure.log. Exemplo:

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

A compilação continua com êxito, mas estou me perguntando por que o autoconf está testando linhas de comando que o gcc não suporta. Isso é para outros compiladores?

Respostas:


11

Citando isto:

O gcc -V é uma maneira de selecionar uma versão específica do gcc quando você tem mais de um, mas isso é um engodo aqui: o configure está repetindo um conjunto de opções (--version -v -V etc.) para garantir que ele possa registrar a versão do compilador C, seja gcc ou outra coisa.

Citando isto:

O gcc costumava ter uma opção -V para relatórios de versão. Agora ele usa -v e fornece as opções de configuração usadas quando o compilador foi criado.

Seu pacote é um pouco datado e não reflete esse fato.

BTW, a opção -qversion foi mesclada ao -v ...

Citando isto:

Em algumas versões do gcc, a opção -V diz para ele usar uma versão especificada do compilador - mas requer um argumento. Está documentado aqui. A opção parece ter sido removida algum tempo entre 4.5.4 e 4.6.4.

que faz referência a isso:


1

O autoconf moderno versão 2.69 pode ser usado com o seguinte método de extração de informações do compilador estendido:

# 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

Ele já está adaptado para testar sinalizadores de extração de versões modernas e legadas. A correção está na última linha, permitindo pular os testes após o 1º sucesso.


"G-Man diz 'Reinstate Monica'" rouba minha edição. Você devia se envergonhar.
okwap 07/11/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.