Erro ao cross-compilar m68k

Software e Hardware para uC da Qualcomm, NXP, FreeScale e Motorola

Moderadores: 51, guest2003

Erro ao cross-compilar m68k

Mensagempor chrdcv » 22 Dez 2013 22:33

Saudações!

Estou cross compilando para a arquitetura 68k, uma vez que a CodeSourcery foi comprada pela MentorGraphics e os filhos da **** não mais disponibilizam a versão "lite". Depois de baixar uma caralhada de arquivos, configurar diretórios, etc... estou quase conseguindo cross-compilar a última versão do gcc, mas então o seguinte erro teima em aparecer:

Código: Selecionar todos
checking for stdbool.h... no
checking stdalign.h usability... no
checking stdalign.h presence... yes
configure: WARNING: stdalign.h: present but cannot be compiled
configure: WARNING: stdalign.h:     check for missing prerequisite headers?
configure: WARNING: stdalign.h: see the Autoconf documentation
configure: WARNING: stdalign.h:     section "Present But Cannot Be Compiled"
configure: WARNING: stdalign.h: proceeding with the compiler's result
checking for stdalign.h... no
checking for the value of EOF... configure: error: computing EOF failed
make[1]: *** [configure-target-libstdc++-v3] Error 1
make[1]: Leaving directory `/home/chris/work/m68k/build-gcc'
make: *** [all] Error 2


A configuração para cross-compilar é essa:
Código: Selecionar todos
../gcc-4.8.2/configure --target=m68k-elf --prefix=/usr/local/m68k-elf/ --enable-interwork --enable-multilib --enable-languages=c,c++ --with-newlib --disable-shared --with-gnu-as --with-gnu-ld --with-gmp=/home/chris/work/tmp/gcc/ --with-mpfr=/home/chris/work/tmp/gcc --disable-libssp


Caso alguém puder ajudar, agradeceria muito!
chrdcv
Seu Madruga: "O trabalho não é ruim, ruim é ter que trabalhar"
Avatar do usuário
chrdcv
Dword
 
Mensagens: 1580
Registrado em: 13 Out 2006 14:13

Re: Erro ao cross-compilar m68k

Mensagempor msamsoniuk » 23 Dez 2013 00:58

coincidentemente eu compilei o gcc cross para m68k, arm, avr, mcore e blackfin ainda na semana passada!

depois de compilar o primeiro, fiz um script e soh fui mudando a arquitetura:

Código: Selecionar todos
#!/bin/sh

TARGET=m68k-elf
#TARGET=arm-none-eabi
#OPTIONS="--enable-interwork --enable-multilib"
#TARGET=bfin-elf
#TARGET=avr-elf32
#TARGET=mcore-elf

rm -Rf binutils-obj gcc-obj newlib-obj

mkdir binutils-obj
cd binutils-obj
../binutils-2.24/configure --target=$TARGET --prefix=/usr/local/$TARGET $OPTIONS
make all install || exit
cd ..

mkdir gcc-obj
cd gcc-obj
../gcc-4.8.2/configure --target=$TARGET --prefix=/usr/local/$TARGET $OPTIONS --enable-languages="c" --with-new-lib --with-headers=../newlib-2.0.0/newlib/libc/include
make all-gcc install-gcc || exit
cd ..


mas eu chutaria que o problema pode estar relacionado ao seu linux x86, pq ele reclama de um arquivo.h que esta presente no sistema, mas q nao pode ser usado na compilacao. isso eh bem suspeito! :P

chrdcv escreveu:Saudações!

Estou cross compilando para a arquitetura 68k, uma vez que a CodeSourcery foi comprada pela MentorGraphics e os filhos da **** não mais disponibilizam a versão "lite". Depois de baixar uma caralhada de arquivos, configurar diretórios, etc... estou quase conseguindo cross-compilar a última versão do gcc, mas então o seguinte erro teima em aparecer:

Código: Selecionar todos
checking for stdbool.h... no
checking stdalign.h usability... no
checking stdalign.h presence... yes
configure: WARNING: stdalign.h: present but cannot be compiled
configure: WARNING: stdalign.h:     check for missing prerequisite headers?
configure: WARNING: stdalign.h: see the Autoconf documentation
configure: WARNING: stdalign.h:     section "Present But Cannot Be Compiled"
configure: WARNING: stdalign.h: proceeding with the compiler's result
checking for stdalign.h... no
checking for the value of EOF... configure: error: computing EOF failed
make[1]: *** [configure-target-libstdc++-v3] Error 1
make[1]: Leaving directory `/home/chris/work/m68k/build-gcc'
make: *** [all] Error 2


A configuração para cross-compilar é essa:
Código: Selecionar todos
../gcc-4.8.2/configure --target=m68k-elf --prefix=/usr/local/m68k-elf/ --enable-interwork --enable-multilib --enable-languages=c,c++ --with-newlib --disable-shared --with-gnu-as --with-gnu-ld --with-gmp=/home/chris/work/tmp/gcc/ --with-mpfr=/home/chris/work/tmp/gcc --disable-libssp


Caso alguém puder ajudar, agradeceria muito!
chrdcv
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Re: Erro ao cross-compilar m68k

Mensagempor chrdcv » 26 Dez 2013 16:57

Marcelo Sam*, obrigado pela ajuda!

Após algumas dezenas de horas... consegui cross-compilar o GCC para o m68k com a seguinte configuração:

Código: Selecionar todos
../gcc-4.8.2/../gcc-4.8.2/configure --target=m68k-elf --prefix=/usr/local/m68k-elf --enable-languages="c" --with-newlib --with-headers=../newlib-2.1.0/newlib/libc/include --disable-libmudflap --disable-libssp --disable-libgomp --disable-libstdcxx-pch --disable-threads --with-gnu-as --with-gnu-ld --disable-nls --with-headers=yes --disable-checking --without-headers --disable-libquadmath --disable-libquadmath-support


Trechos finais pós make install:
Código: Selecionar todos
/bin/bash ../../../../../gcc-4.8.2/../gcc-4.8.2/libgcc/../mkinstalldirs /usr/local/m68k-elf/lib/gcc/m68k-elf/4.8.2/include
/usr/bin/install -c -m 644 unwind.h /usr/local/m68k-elf/lib/gcc/m68k-elf/4.8.2/include
make[4]: Leaving directory `/home/chris/work/m68k/build-gcc/m68k-elf/mfidoa/softfp/libgcc'
make[3]: Leaving directory `/home/chris/work/m68k/build-gcc/m68k-elf/libgcc'
make[2]: Leaving directory `/home/chris/work/m68k/build-gcc/m68k-elf/libgcc'
make[1]: Leaving directory `/home/chris/work/m68k/build-gcc'


Entretanto, ao tentar compilar depois a newlib com a configuração:
Código: Selecionar todos
 ../newlib-2.1.0/configure --target=m68k-elf --prefix=/usr/local/m68k-elf/ --enable-newlib-reent-small --disable-malloc-debugging --enable-newlib-multithread --disable-newlib-io-float --disable-newlib-supplied-syscalls --disable-newlib-io-c99-formats --disable-newlib-mb --disable-newlib-atexit-alloc --enable-target-optspace --disable-shared --enable-static --enable-fast-install

As seguintes mensagens de erro são dadas após o make:
checking whether we are using GNU C... (cached) yes
checking whether m68k-elf-gcc -B/home/chris/work/m68k/build-newlib/m68k-elf/newlib/ -isystem /home/chris/work/m68k/build-newlib/m68k-elf/newlib/targ-include -isystem /home/chris/work/m68k/newlib-2.0.0/newlib/libc/include -B/home/chris/work/m68k/build-newlib/m68k-elf/libgloss/m68k -L/home/chris/work/m68k/build-newlib/m68k-elf/libgloss/libnosys -L/home/chris/work/m68k/newlib-2.0.0/libgloss/m68k accepts -g... (cached) no
checking for m68k-elf-as... (cached) m68k-elf-as
checking for m68k-elf-ar... (cached) m68k-elf-ar
checking for m68k-elf-ranlib... (cached) m68k-elf-ranlib
checking for m68k-elf-readelf... (cached) m68k-elf-readelf
checking whether to enable maintainer-specific portions of Makefiles... no
checking for build system executable suffix... no
configure: updating cache .././config.cache
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands
make[1]: Leaving directory `/home/chris/work/m68k/build-newlib'
make: *** [all] Error 2
Seu Madruga: "O trabalho não é ruim, ruim é ter que trabalhar"
Avatar do usuário
chrdcv
Dword
 
Mensagens: 1580
Registrado em: 13 Out 2006 14:13

Re: Erro ao cross-compilar m68k

Mensagempor msamsoniuk » 26 Dez 2013 21:10

provavelmente eh um problema entre a versao do GCC e a versao da newlib... daih vem a pergunta: vc realmente precisa da newlib para compilar?

chrdcv escreveu:Marcelo Sam*, obrigado pela ajuda!

Após algumas dezenas de horas... consegui cross-compilar o GCC para o m68k com a seguinte configuração:

Código: Selecionar todos
../gcc-4.8.2/../gcc-4.8.2/configure --target=m68k-elf --prefix=/usr/local/m68k-elf --enable-languages="c" --with-newlib --with-headers=../newlib-2.1.0/newlib/libc/include --disable-libmudflap --disable-libssp --disable-libgomp --disable-libstdcxx-pch --disable-threads --with-gnu-as --with-gnu-ld --disable-nls --with-headers=yes --disable-checking --without-headers --disable-libquadmath --disable-libquadmath-support


Trechos finais pós make install:
Código: Selecionar todos
/bin/bash ../../../../../gcc-4.8.2/../gcc-4.8.2/libgcc/../mkinstalldirs /usr/local/m68k-elf/lib/gcc/m68k-elf/4.8.2/include
/usr/bin/install -c -m 644 unwind.h /usr/local/m68k-elf/lib/gcc/m68k-elf/4.8.2/include
make[4]: Leaving directory `/home/chris/work/m68k/build-gcc/m68k-elf/mfidoa/softfp/libgcc'
make[3]: Leaving directory `/home/chris/work/m68k/build-gcc/m68k-elf/libgcc'
make[2]: Leaving directory `/home/chris/work/m68k/build-gcc/m68k-elf/libgcc'
make[1]: Leaving directory `/home/chris/work/m68k/build-gcc'


Entretanto, ao tentar compilar depois a newlib com a configuração:
Código: Selecionar todos
 ../newlib-2.1.0/configure --target=m68k-elf --prefix=/usr/local/m68k-elf/ --enable-newlib-reent-small --disable-malloc-debugging --enable-newlib-multithread --disable-newlib-io-float --disable-newlib-supplied-syscalls --disable-newlib-io-c99-formats --disable-newlib-mb --disable-newlib-atexit-alloc --enable-target-optspace --disable-shared --enable-static --enable-fast-install

As seguintes mensagens de erro são dadas após o make:
checking whether we are using GNU C... (cached) yes
checking whether m68k-elf-gcc -B/home/chris/work/m68k/build-newlib/m68k-elf/newlib/ -isystem /home/chris/work/m68k/build-newlib/m68k-elf/newlib/targ-include -isystem /home/chris/work/m68k/newlib-2.0.0/newlib/libc/include -B/home/chris/work/m68k/build-newlib/m68k-elf/libgloss/m68k -L/home/chris/work/m68k/build-newlib/m68k-elf/libgloss/libnosys -L/home/chris/work/m68k/newlib-2.0.0/libgloss/m68k accepts -g... (cached) no
checking for m68k-elf-as... (cached) m68k-elf-as
checking for m68k-elf-ar... (cached) m68k-elf-ar
checking for m68k-elf-ranlib... (cached) m68k-elf-ranlib
checking for m68k-elf-readelf... (cached) m68k-elf-readelf
checking whether to enable maintainer-specific portions of Makefiles... no
checking for build system executable suffix... no
configure: updating cache .././config.cache
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands
make[1]: Leaving directory `/home/chris/work/m68k/build-newlib'
make: *** [all] Error 2
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Re: Erro ao cross-compilar m68k

Mensagempor chrdcv » 26 Dez 2013 22:22

Marcelo, não sei se é necessário o uso da newlib para depois cross-compilar o g++ (queria muito re-escrever um firmware em c++). Por isso pensei que fosse necessário a newlib.

Vou cross-compilar c e c++ e ver o que acontece. Postarei o resultado aqui em brev.

Mais uma vez obrigado pela ajuda!
Seu Madruga: "O trabalho não é ruim, ruim é ter que trabalhar"
Avatar do usuário
chrdcv
Dword
 
Mensagens: 1580
Registrado em: 13 Out 2006 14:13

Re: Erro ao cross-compilar m68k

Mensagempor msamsoniuk » 27 Dez 2013 01:22

chrdcv escreveu:Marcelo, não sei se é necessário o uso da newlib para depois cross-compilar o g++ (queria muito re-escrever um firmware em c++). Por isso pensei que fosse necessário a newlib.

Vou cross-compilar c e c++ e ver o que acontece. Postarei o resultado aqui em brev.

Mais uma vez obrigado pela ajuda!


nao sei se esta atualizado, mas tem um detalhe importante na hora de escolher o target:

http://gcc.gnu.org/install/specific.html#m68k-x-x

note que o certo seria m68k-[linker]-[kernel]

no linker hoje em dia se faz apenas elf pq se popularizou muito, mas antes do elf existir os formatos coff e aout eram populares. e no caso do kernel vc escolheria entre linux, uclinux, netbsd, openbsd, etc. o formato de linkar eh meio obvio, mas o kernel nao tanto, mas na realidade vc estah dizendo que durante o build da libc vc vai ter uma certa metodologia de chamada de syscalls, ou seja, um printf() vai virar um write(), que por sua vez vai cair em uma syscall, soh que isso varia de kernel para kernel. se omitir isso, supostamente nao tem como fazer build da libc, pq nao tem uma formato para syscalls. no meu caso m68k-elf funciona pq eu nao uso a libc, entao nao preciso definir formato de syscalls.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04


Voltar para NXP (ex-FreeScale (ex-Motorola))

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x