Kompilieren des GCCs
-
Ich benötige eine andere Version von gfortran auf meinem Mac als die, die mit XCode mitgeliefert wird. Deshalb muss ich den GCC auf meinem Mac kompilieren. Dazu habe ich mir die Resourcen des GCC 4.3.5 (mit der korrekten gfortran Version) runtergeladen und folgendes gemacht:
1.Configure von GCC ausführen
gcc-4.3.5$ ./configure --prefix=/Pfad/zu/gcc4.3.5/
...
checking for correct version of gmp.h... no
configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.0+.
Try the --with-gmp and/or --with-mpfr options to specify their locations.
Copies of these libraries' source code can be found at their respective
hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/.
See also http://gcc.gnu.org/install/prerequisites.html for additional info.
If you obtained GMP and/or MPFR from a vendor distribution package, make
sure that you have installed both the libraries and the header files.
They may be located in separate packages.2.Anschließend habe ich MPFR (http://www.mpfr.org/) runtergeladen
mpfr-3.0.0$ ./configure
...
checking for gmp.h... no
configure: error: gmp.h can't be found, or is unusable.3.Also dann GMP (http://gmplib.org/) runtergeladen:
gmp-5.0.1$ ./configure
gmp-5.0.1$ make
gmp-5.0.1$ make installKeine Fehler
4.MPFR nochmal versucht zu kompilieren
mpfr-3.0.0$ ./configure --with-gmp=/Pfad/zu/gmp-5.0.1/
mpfr-3.0.0$ make
mpfr-3.0.0$ make installKeine Fehler
5.Und schließlich für den GCC
gcc-4.3.5$ ./configure --prefix=/Pfad/zum/gcc4.3.5/ --with-mpfr=/Pfad/zu/mpfr-3.0.0/ --with-gmp=/Pfad/zu/gmp-5.0.1/
Configure läuft ohne Fehler durch und anschließend führe ich dann ein make aus:
gcc-4.3.5$ make
Und erhalte dann folgende Fehlermeldung:
checking for suffix of object files... configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[2]: *** [configure-stage1-target-libgcc] Error 1
make[1]: *** [stage1-bubble] Error 2
make: *** [all] Error 2Nun steht dort ja "See `config.log' for more details.". Da hab ich natürlich auch reingeschaut, weiss aber nicht wonach ich darin suchen soll (ist ne sehr lange Datei).
Hat jemand ne Ahnung was hier schief läuft?
-
Siehe hier:
http://www.c-plusplus.net/forum/280238Paketname lautet dann eben "gcc43" statt "gcc45".
-
Du brauchst noch einen Shell-Aufruf (falls das auf dem Mac genauso geht wie unter Linux):
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:Pfad/zu/den/gmp/libs:Pfad/zu/den/mpfr/libs
EDIT: Übrigens kannst du einstellen, dass nur Fortran kompiliert werden soll mit --enable-languages=fortran (vielleicht heißt es auch fort oder f oder was auch immer)
-
Danke erstmal für die Antworten.
Habe ein export durchgeführt, hat an der Situtation nichts geändert, ich erhalte nach wie vor denselben Fehler. Ebenfalls, wenn ich --enable-language=fortran beim configure script mit angebe, dann erhalte ich wieder denselben Fehler.
Kann man kontrollieren wohin die Dateien aus einem Finkpaket installiert werden? Ich möchte nämlich sämliche Binaries vom GCC gerne in einem bestimmten Ordner auf der Festplatte ablegen.
Persönlich finde ich den Ansatz des selber kompilierens besser, weshalb ich lieber die Fehlermeldung verstehen würde und was man dagegen unternehmen kann.
-
Ich habe mir ein komplettes GCC-Buildscript unter Linux erstellt, vielleicht könntest du das ja gebrauchen. Ich muss mal schauen, wann ich mal wieder Linux boote
.
-
HändyÄndy schrieb:
Kann man kontrollieren wohin die Dateien aus einem Finkpaket installiert werden? Ich möchte nämlich sämliche Binaries vom GCC gerne in einem bestimmten Ordner auf der Festplatte ablegen.
Ja. Aber es wäre sinnvoller, einfach Symlinks anzulegen, nachdem Du ohnehin alles in /sw liegen hast, ist Fink und der GCC ohnehin schön isoliert.
Persönlich finde ich den Ansatz des selber kompilierens besser
Mit Fink wird die GCC ja auch auf Deiner Box kompiliert. Nur dass Du eben eine vernünftige Paketverwaltung verwendest und nicht einfach wild irgendwelches Zeug unversioniert in der Weltgeschichte herumkopierst.
-
So, hier nun mein Linux-Linux Build-\1:
Du solltest also einen Ordner mit den im Kommentar angegebenen Unterordnern, die die Sourcedateien der jeweiligen Programme/Libraries enthalten, anlegen und ihn dem Script übergeben.
Da ist jetzt auch libelf für Link-Time-Optimization dabei, entferne sie einfach, da du ja GCC 4.3 verwendest.#!/bin/sh #Build with host=linux, target=linux: #Folders: binutils-src, gcc-src, gmp-src, mpfr-src, mpc-src, libelf-src export BUILDDIR=$1 cd $BUILDDIR mkdir Linux cd Linux mkdir gmp-dest mkdir mpfr-dest mkdir mpc-dest mkdir libelf-dest cd .. mkdir gcc cd gcc mkdir binutils-ll-dest mkdir gcc-ll-dest cd .. cd gcc/binutils-ll-dest ../../binutils-src/configure --prefix=$BUILDDIR/gcc/ll-gcc --enable-shared --enable-multiarch --program-prefix=ll- --enable-nls --enable-targets=all --disable-werror make -j 2 LDFLAGS=-ldl make -j 2 install cd ../.. cd Linux/gmp-dest ../../gmp-src/configure --prefix=$BUILDDIR/Linux/gmp-install make -j 2 make -j 2 install cd ../.. cd Linux/mpfr-dest ../../mpfr-src/configure --with-gmp=$BUILDDIR/Linux/gmp-install --prefix=$BUILDDIR/Linux/mpfr-install make -j 2 make -j 2 install cd ../.. cd Linux/mpc-dest ../../mpc-src/configure --with-gmp=$BUILDDIR/Linux/gmp-install --with-mpfr=$BUILDDIR/Linux/mpfr-install --prefix=$BUILDDIR/Linux/mpc-install make -j 2 make -j 2 install cd ../.. cd Linux/libelf-dest ../../libelf-src/configure --prefix=$BUILDDIR/Linux/libelf-install make -j 2 make -j 2 install cd ../.. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$BUILDDIR/Linux/gmp-install/lib:$BUILDDIR/Linux/mpfr-install/lib:$BUILDDIR/Linux/mpc-install/lib:$BUILDDIR/Linux/libelf-install/lib cd gcc/gcc-ll-dest ../../gcc-src/configure --enable-languages=c,c++ --prefix=$BUILDDIR/gcc/ll-gcc --enable-threads=posix --program-prefix=ll- --enable-nls --with-gmp=$BUILDDIR/Linux/gmp-install --with-mpfr=$BUILDDIR/Linux/mpfr-install --with-mpc=$BUILDDIR/Linux/mpc-install --with-libelf=$BUILDDIR/Linux/libelf-install --enable-lto make -j 2 make -j 2 install cd ../..
-
Habe mir gerade fink installiert und leider gibt es dort keinen gcc-4.3.5.
-
Doch. Das Paket gcc43 ist genau die 4.3.5er-GCC.
-
Mmmmh
apt-cache search gcc
gcc4.0 - [virtual package representing the gcc 4.0.1 compiler]
gcc4.2 - [virtual package representing the gcc 4.2.1 compiler]
-
Ja, sagte ich doch. Binärpaket gibt es da keines.
Befolge doch bitte die verlinkte Anleitung, wenn Du
fink install gcc43
machst, sollte das dann gehen.
-
Also bei mir kennt er das Paket nicht:
sudo fink install gcc43
Password:
Scanning package description files..........
Information about 310 packages read in 1 seconds.
Failed: no package found for specification 'gcc43'!
-
Ansonsten gibt es bei den Macports ein gcc43 Paket: http://trac.macports.org/browser/trunk/dports/lang/gcc43/Portfile