gcc crosscompile unter linux für mips

OP (Firma: www.dossmatik.de) #2863086
Lesenswert?

Ich will ein crosschain für den MIPS unter Linux bauen. Eigentlich nicht 
aufregendes, doch es läuft nicht durch. Irgendwas wird falsch 
konfiguriert.


Ich habe die Binutils ohne probleme hinbekommen. Allerdings scheiter ich 
beim gcc.




checking stdbool.h usability... no
checking stdbool.h presence... yes
configure: WARNING: stdbool.h: present but cannot be compiled
configure: WARNING: stdbool.h:     check for missing prerequisite 
headers?
configure: WARNING: stdbool.h: see the Autoconf documentation
configure: WARNING: stdbool.h:     section "Present But Cannot Be 
Compiled"
configure: WARNING: stdbool.h: proceeding with the compiler's result
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[2]: *** [configure-target-libstdc++-v3] Fehler 1
make[2]: Leaving directory `/home/red/crosscompile/gcc-bootstrap'
make[1]: *** [all] Fehler 2
make[1]: Leaving directory `/home/red/crosscompile/gcc-bootstrap'

ich habe den gleichen Fehler unter Suse11.4 und Fedora 17.
weiter wichtige Hiweise.


BINUTILS = binutils-2.22
GCC = gcc-4.7.2


GCC_OPTS =  \
        --with-newlib\
        --enable-multilib\
        --disable-werror\
        --with-system-zlib\
        --with-float=soft\
        --enable-languages="c,c++" \
        --disable-nls \
        --disable-threads \
        --disable-shared \
        --disable-libssp \
        --disable-hosted-libstdcxx\
        --with-gnu-ld --with-gnu-as


Hier muss ein Fehler im System sein. Wenn ich es richtig lese, hapert es 
an der -libstdc++. Hier habe ich alles installiert was ich zu diesem 
Thema finde. Da der Leidensweg bis der Fehler kommt lange dauert, muss 
ich hier mal fragen ob jemand das Problem kennt und eine Idee hat was 
hier klemmt.
Es ist verhext.
#2863155
Lesenswert?

Möglichkeit 1: Nimm Pinguino, da ist die MIPS toolchain dabei.

Selber bauen geht auch relativ problemlos.

> Wenn ich es richtig lese, hapert es
> an der -libstdc++.

Dann lass die doch weg.

Der GCC wird in zwei Durchläufen gebaut. Beim ersten Mal üblicherweise 
nur mit "c". "c++" kommt im 2. Durchlauf dazu. Vielleicht liegt es 
daran. Überhaupt hast Du relativ viele Dinge aktiviert im 1. Durchlauf.
Gast #2863202
Lesenswert?

dlya schrieb:
> Codesourcery hat WIMRE auch eine gcc-MIPS Toolcahin.

Habe ich auch schon benutzt, passt aber nicht ganz für MIPS R2000/R3000,
weil newlib für mips32 gebaut. Es werden sehr viele Befehle benutzt, die
von Plasma bzw. Mais nicht unterstützt werden.

Ich habe auch meine MIPS GCC selber gebaut. Seit dem habe ich einen
vollständigen und funktionierenden C/C++ Compiler mit newlib für
Plasma-Softcore.

MfG
OP (Firma: www.dossmatik.de) #2863232
Lesenswert?

Johann L. schrieb:
> Wie sieht das configure vom GCC bzw. binutils aus?
>
> Was macht --disable-hosted-libstdcxx ?
Hatte Besserung erhofft.

> Wozu brauchst du --with-gnu-ld und --with-gnu-as ?
Hatte hier abgeschaut.
http://www.ifp.illinois.edu/~nakazato/tips/xgcc.html



Hier kommt mein Makefile:



BINUTILS = binutils-2.22
GCC = gcc-4.7.2



NEWLIB = /data/src/newlib-1.19.0
GDB = /data/src/insight-6.8-1



ARCHITECTURE = mips-elf
PREFIX =/opt/mips



GCC_OPTS =  \
        --with-newlib\
        --enable-multilib\
        --disable-werror\
        --with-system-zlib\
        --with-float=soft\
        --enable-languages="c,c++" \
        --disable-nls \
        --disable-threads \
        --disable-shared \
        --disable-libssp \
        --disable-hosted-libstdcxx\
        --with-gnu-ld --with-gnu-as


download:
        #download binutils
        wget ftp.gnu.org/gnu/binutils/$(BINUTILS).tar.gz
        tar -xzf $(BINUTILS).tar.gz
        #download gcc
        wget 
ftp://ftp.gwdg.de/pub/misc/gcc/releases/$(GCC)/$(GCC).tar.gz
        tar -xzf $(GCC).tar.gz
        #download newlib
        wget ftp://sources.redhat.com/pub/newlib/newlib-1.20.0.tar.gz
        tar -xzf newlib-1.20.0.tar.gz
build-binutils:
        mkdir binutils
        cd binutils; \
        ../binutils-2.22/configure --prefix=$(PREFIX) 
--target=$(ARCHITECTURE) 2>&1 | tee binutils_configure.log; \
        make all 2>&1 | tee binutils_make.log

install-binutils:
        cd binutils; \
        make install 2>&1 | tee binutils_install.log


build-gcc-bs:
        mkdir gcc-bootstrap
        export PATH=$$PATH:$(PREFIX)/bin; \
                cd gcc-bootstrap; \
        ../$(GCC)/configure --target=$(ARCHITECTURE) \
        $(GCC_OPTS) --without-headers \
        --prefix=$(PREFIX)  2>&1 |tee gcc-bs_configure.log;\
        make all 2>&1 | tee gc-bs_make.log

install-gcc:
        cd gcc-bootstrap; \
        make install 2>&1 | tee gcc-bs_install.log
OP (Firma: www.dossmatik.de) #2863236
Lesenswert?

>> Wenn ich es richtig lese, hapert es
>> an der -libstdc++.
>
> Dann lass die doch weg.
>
Wie?

> Der GCC wird in zwei Durchläufen gebaut. Beim ersten Mal üblicherweise
> nur mit "c". "c++" kommt im 2. Durchlauf dazu. Vielleicht liegt es
> daran. Überhaupt hast Du relativ viele Dinge aktiviert im 1. Durchlauf.

Was kann ich noch alles abschalten?
OP (Firma: www.dossmatik.de) #2863317
Lesenswert?

Johann L. schrieb:
> Oje, die ANleitung ist ja Asbach Uralt... für GCC 4.1
>
> - Du willst eine newlib, also gib sie dem Compiler auch!

Wie?

>
> - Du brauchst GMP/MPFR/MPC, am bequemsten und am konsistentesten geht

Da hatte er am Anfang gemeckert.  Die habe ich bereits installiert.

>
> gcc hängt ab von install-binutils.

binutils sind bereits installiert und unter /opt/mips sichtbar.


> Übrigens ist das kein bootstrap, die Bezeichnung verwirrt.

Warum? Was fehlt oder ist zuviel?
OP (Firma: www.dossmatik.de) #2863321
Lesenswert?

>
> Ich versuche es nochmal mit genau den configs im gcc und dan sehen wir
> mehr.

neuer Versuch ging auch in die Hose.

build-gcc-bs:
        mkdir gcc-bootstrap
        export PATH=$$PATH:$(PREFIX)/bin; \
                cd gcc-bootstrap; \
        ../$(GCC)/configure --target=$(ARCHITECTURE) -prefix=$(PREFIX) \
        --without-headers --with-newlib  --with-gnu-as --with-gnu-ld \
         2>&1 |tee gcc-bs_configure.log;\
        make all 2>&1 | tee gc-bs_make.log




checking for the value of EOF... configure: error: computing EOF failed
make[2]: *** [configure-target-libstdc++-v3] Fehler 1
make[2]: Leaving directory `/home/red/crosscompile/gcc-bootstrap'
make[1]: *** [all] Fehler 2
make[1]: Leaving directory `/home/red/crosscompile/gcc-bootstrap'
[red@PCblack crosscompile]$
Persönliche Seite #2863340
Lesenswert?

René D. schrieb:
> Johann L. schrieb:
>> - Du willst eine newlib, also gib sie dem Compiler auch!
>
> Wie?

Genau wie mit GMP/MPFR/MPC: Du linkst newlib als newlib in den 
Quellbaum.

>> Übrigens ist das kein bootstrap, die Bezeichnung verwirrt.
>
> Warum? Was fehlt oder ist zuviel?

René D. schrub im Beitrag #2863086:
> Ich will ein crosschain für den MIPS unter Linux bauen.

Du willst einen Cross-Compiler.

Ein Bootstrap ist ein nacktes configure und erzeugt somit keinen 
Cross-Compiler.
OP (Firma: www.dossmatik.de) #2863400
Lesenswert?

>>> - Du willst eine newlib, also gib sie dem Compiler auch!
>>
>> Wie?
>
> Genau wie mit GMP/MPFR/MPC: Du linkst newlib als newlib in den
> Quellbaum.
>

Warte hier ist was im argen.

Also die GMP/MPFR/MPC habe ich mit dem Paketmanager installiert.
Die newlib gibt es nicht im Paketmanger zumindest bei Fedora17.

Die GMP/MPFR/MPC sieht der host-gcc.

die newlib sieht der host-gcc nicht.
Gast #2863565
Lesenswert?

jetzt habe ich den gcc erzeugt und installiert.


red@linux-nrd1:~/Desktop> ls /opt/mips/bin
mips-elf-addr2line  mips-elf-g++        mips-elf-jcf-dump 
mips-elf-readelf
mips-elf-ar         mips-elf-gcc        mips-elf-ld        mips-elf-size
mips-elf-as         mips-elf-gcc-4.4.3  mips-elf-ld.bfd 
mips-elf-strings
mips-elf-c++        mips-elf-gccbug     mips-elf-nm 
mips-elf-strip
mips-elf-c++filt    mips-elf-gcj        mips-elf-objcopy
mips-elf-cpp        mips-elf-gcov       mips-elf-objdump
mips-elf-elfedit    mips-elf-gfortran   mips-elf-ranlib


newlib will mit mips-elf-cc loslegen. Habe ich da eine Option vergessen?
oder kann ich einfachen einen link nach mips-elf-gcc ziehen?



/home/red/crosscompile/newlib/mips-elf/newlib/libc/argz'
mips-elf-cc -B/home/red/crosscompile/newlib/mips-elf/newlib/ -isystem 
/home/red/crosscompile/newlib/mips-elf/newlib/targ-include -isystem 
/home/red/crosscompile/newlib-1.20.0/newlib/libc/include 
-B/home/red/crosscompile/newlib/mips-elf/libgloss/mips 
-L/home/red/crosscompile/newlib/mips-elf/libgloss/libnosys 
-L/home/red/crosscompile/newlib-1.20.0/libgloss/mips 
-DPACKAGE_NAME=\"newlib\" -DPACKAGE_TARNAME=\"newlib\" 
-DPACKAGE_VERSION=\"1.20.0\" -DPACKAGE_STRING=\"newlib\ 1.20.0\" 
-DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -I. 
-I../../../../../newlib-1.20.0/newlib/libc/argz -DMISSING_SYSCALL_NAMES 
-fno-builtin      -g -O2 -c -o lib_a-dummy.o `test -f 'dummy.c' || echo 
'../../../../../newlib-1.20.0/newlib/libc/argz/'`dummy.c
/bin/sh: mips-elf-cc: command not found

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren