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

9

Ao compilar com o gcc 4.7.2 e o autoconf 2.69, estou obtendo resultados rotineiramente como 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 sucesso, mas estou me perguntando por que o autoconf está testando as linhas de comando que o gcc não suporta. Isso é para outros compiladores?

    
por syrinx 30.11.2014 / 16:39

2 respostas

9

Citando isso:

gcc -V is a way of selecting a specific gcc version when you have more than one, that's a decoy here though: configure is iterating through a set of options (--version -v -V etc.) to make sure it can log the version of the C compiler, be it gcc or something else.

Citando isso:

gcc used to have a -V option for version reports. It now uses -v, and provides the configuration options used when the compiler was built.

You package is a bit dated and doesn't reflect that fact.

BTW, the -qversion option was merged into the -v...

Citando isso:

On some versions of gcc, the -V option tells it to use a specified version of the compiler -- but it requires an argument. It's documented here. The option appears to have been removed some time between 4.5.4 and 4.6.4.

que faz referência a isso:

por 01.12.2014 / 16:19
0

O moderno autoconf 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á é adotado para testar sinalizadores de extração de versão modernos e legados. a correção está na última linha, permitindo ignorar o teste após o primeiro sucesso.

    
por 16.05.2017 / 11:02