autoconf tentou invocar "exec -m" sob bash, mas -m não é um operando legal para exec

0

Esta questão pode ser realmente sobre onde obter ajuda, em vez de ajudar o problema em si. Por favor, perdoe a verbosidade!

Estou tentando construir o gcc para rodar no Win32 e produzir código para o AVR. Comecei com os arquivos usados pelo pessoal do Arduino para construir sua cadeia de ferramentas AVR.

Estando em uma máquina Windows, e que a Atmel usa o GCC 4.9.2 para construir sua cadeia de ferramentas atual (que é então copiada / corrigida) pelo pessoal do Arduino, Eu instalei um Sistema MinGW com um GCC em 4.9.2 , baixado o fonte da cadeia de ferramentas e seguiu suas instruções (é claro que eu acidentalmente fiz algo errado, ou algo assim?).

O estágio ./configure do autoconf (na verdade G:\GNU-GCC\toolchain-avr\gcc\libgcc\configure ) parece invocar com sucesso um gcc várias vezes, usando um programa Win32 chamado xgcc.exe que o autoconf coloca no meu diretório gcc-build / gcc. A última execução bem-sucedida tem -qversion para as opções do compilador.

A próxima execução é exatamente a mesma chamada, exceto pelo fato de usar -o conftest -g -w -O2 -g0 -DWIN32 conftest.c como opções do compilador, e desta vez tenta disparar o compilador usando exec -m .

Isso não funciona, porque o comando bash exec não possui a opção -m .

Observe que xgcc.exe é um programa real (não um script) e é compilado pela etapa de criação do autoconf. Pode ser o compilador cruzado, pois é copiado para gcc-cross.exe . Portanto, eu assumo que o iniciador do autoconf (macro M4?) está causando o erro.

Aqui está uma parte de config.log : (procure as linhas que começam com exec: usage: exec [-cl] [-a name] file ...

gcc version 4.9.2 (GCC) 
configure:3373: $? = 0
configure:3362: /g/gnu-gcc/toolchain-avr/gcc-build/./gcc/xgcc -B/g/gnu-gcc/toolchain-avr/gcc-build/./gcc/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/bin/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/lib/ -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/include -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/sys-include    -V 
xgcc.exe: error: unrecognized command line option '-V'
xgcc.exe: fatal error: no input files
compilation terminated.
configure:3373: $? = 1
configure:3362: /g/gnu-gcc/toolchain-avr/gcc-build/./gcc/xgcc -B/g/gnu-gcc/toolchain-avr/gcc-build/./gcc/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/bin/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/lib/ -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/include -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/sys-include    -qversion 
xgcc.exe: error: unrecognized command line option '-qversion'
xgcc.exe: fatal error: no input files
compilation terminated.
configure:3373: $? = 1
configure:3389: /g/gnu-gcc/toolchain-avr/gcc-build/./gcc/xgcc -B/g/gnu-gcc/toolchain-avr/gcc-build/./gcc/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/bin/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/lib/ -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/include -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/sys-include    -o conftest -g -w -O2 -g0 -DWIN32   conftest.c
g:/gnu-gcc/toolchain-avr/gcc-build/gcc/as: line 106: exec: -m: invalid option
exec: usage: exec [-cl] [-a name] file [redirection ...]
configure:3392: $? = 1
configure:3580: checking for suffix of object files
configure:3602: /g/gnu-gcc/toolchain-avr/gcc-build/./gcc/xgcc -B/g/gnu-gcc/toolchain-avr/gcc-build/./gcc/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/bin/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/lib/ -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/include -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/sys-include    -c -g -w -O2 -g0 -DWIN32  conftest.c
g:/gnu-gcc/toolchain-avr/gcc-build/gcc/as: line 106: exec: -m: invalid option
exec: usage: exec [-cl] [-a name] file [redirection ...]

Aqui está a seção do gcc-build / gcc / libgcc / config que acredito ter produzido o log.

# 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
  test $ac_status = 0; }
done

cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

Neste ponto, não tenho certeza de onde procurar ajuda. O pessoal do Arduino não respondeu, e eu não sei o suficiente sobre o autoconf para procurar por um problema em um arquivo autoconf.ac, ou no código autoconf que gera o ./config para o aplicativo, ou as macros do MC.

Uma varredura de "exec" no diretório de ferramentas do automake deu um zilhão de ocorrências, nenhuma das quais parecia uma opção sendo adicionada a "exec somethings ...". Mas eu não sei NADA sobre o M4, e tenho medo de aprender a depurar arquivos .ac.

Sugestões, por favor?

    
por HiTechHiTouch 20.09.2016 / 01:32

1 resposta

0

O log informa você o suficiente para ver onde procurar. A mensagem de erro vem do assembler as como resultado da execução da linha 3389 no script de configuração:

configure:3389: /g/gnu-gcc/toolchain-avr/gcc-build/./gcc/xgcc -B/g/gnu-gcc/toolchain-avr/gcc-build/./gcc/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/bin/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/lib/ -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/include -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/sys-include    -o conftest -g -w -O2 -g0 -DWIN32   conftest.c
g:/gnu-gcc/toolchain-avr/gcc-build/gcc/as: line 106: exec: -m: invalid option

O montador é executado com base em um arquivo de texto que você pode encontrar mencionado se ativar a opção detalhada (editando o script de configuração, adicionando -v aos sinalizadores do compilador). No seu exemplo, essa poderia ser esta linha:

(eval "$ac_compiler $ac_option >&5") 2>conftest.err

que você pode modificar para

(eval "$ac_compiler -v $ac_option ->&5") 2>conftest.err

Depois de descobrir isso, você pode ver o problema.

O programa xgcc que parece estar discutindo é gcc construído / vinculado como parte da criação de gcc . Esse programa mostrará as opções disponíveis, considerando a opção --help (consulte código-fonte ).

    
por 20.09.2016 / 01:55