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.
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.
Wie sieht das configure vom GCC bzw. binutils aus? Was macht --disable-hosted-libstdcxx ? Wozu brauchst du --with-gnu-ld und --with-gnu-as ? Erste Anlaufstelle für solche Fragen ist die gcc-help@ Mailing-Liste.
Brauchst Du c++ überhaupt? Schau 'mal in die config.log (oder config.status o.ä), da steht normalerweise mehr drin. Vielleicht hilft das.
>Möglichkeit 1: Nimm Pinguino, da ist die MIPS toolchain dabei.
Codesourcery hat WIMRE auch eine gcc-MIPS Toolcahin.
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
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
>> 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?
René D. schrieb: > mkdir gcc-bootstrap Eben. Das ist der erste Durchlauf. Darauf folgt das Bauen der newlib, danach kommt im 2. Durchlauf C++ dazu. Genau so steht es auch in dem von Dir geposteten Link. Einfach mal dort alles abschauen.
> Genau so steht es auch in dem von Dir geposteten Link. Einfach mal dort > alles abschauen. ich habe doch mit disable mehr abgeschaltet als in dem Link. Ich versuche es nochmal mit genau den configs im gcc und dan sehen wir mehr.
Oje, die ANleitung ist ja Asbach Uralt... für GCC 4.1 - Du willst eine newlib, also gib sie dem Compiler auch! - Du brauchst GMP/MPFR/MPC, am bequemsten und am konsistentesten geht das mit
1 | (cd $(GCC); ./contrib/download_prerequisites) |
gcc hängt ab von install-binutils. Übrigens ist das kein bootstrap, die Bezeichnung verwirrt.
Rene, wenn du bei configure von GCC --enable-languages="c" angibst, wird nur C-Compiler gebaut. Danach muss aber trotzdem zweite Durchlauf ausgeführt werden (lingcc.a wird gebaut) MfG
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?
> > 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]$
Dimi S. schrieb: > wenn du bei configure von GCC --enable-languages="c" angibst, > wird nur C-Compiler gebaut. Danach muss aber trotzdem zweite > Durchlauf ausgeführt werden (lingcc.a wird gebaut) Nö, das geht alles automatisch. Von Hand muss da nix gemacht werden.
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.
>>> - 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.
Newlib muss aus Quellen gebaut werden, aber erst, wenn GCC gebaut ist. Versuch erst mal nur C-Compiler zu bauen. Danach newlib.
Ich hab auch nix von installieren gesagt. Ich sagte: genauso, wie auch der empfohlene Weg ist, GMP/MPFR/MPC zur Verfügung zu stellen. GCC weiß, was und wie der damit umzugehen hat.
Dimi S. schrieb: > Newlib muss aus Quellen gebaut werden, aber erst, wenn GCC gebaut ist. Ersetze "muss" durch "kann". > Versuch erst mal nur C-Compiler zu bauen. Danach newlib. Ein int-tree build ist einfacher. Warum sich mix x configures rumärgern, wenn's ein einziges tut?
> > Übrigens ist das kein bootstrap, die Bezeichnung verwirrt. jetzt sehe ich einen großen Unterschied ich muss mit make all-gcc starten. Mal sehen ob das mein Problem ist.
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
dose schrieb: > newlib will mit mips-elf-cc loslegen. Habe ich da eine Option vergessen? > oder kann ich einfachen einen link nach mips-elf-gcc ziehen? Ich hatte es so gelöst: cp /opt/mips-gcc/bin/mips-elf-gcc /opt/mips-gcc/bin/mips-elf-cc
Dimi S. schrieb: > Ich hatte es so gelöst: > cp /opt/mips-gcc/bin/mips-elf-gcc /opt/mips-gcc/bin/mips-elf-cc statt cp besser ein ln -s.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.