2012-02-12 5 views
35

ho scaricato GCC 4.5 da http://www.netgull.com/gcc/releases/gcc-4.5.0/ ma quando provo ad installare/costruisco io sono sempre sotto l'errore:costruzione GCC richiede GMP 4.2+, MPFR 2.3.1+ e MPC 0.8.0+

Linux:>~/shared_scripts/bin/gcc/gcc-4.5.0 1040> /x/home/prakash_satya/shared_scripts/bin/gcc/gcc-4.5.0/configure CC="gcc -m64" --prefix=/x/home/prakash_satya/shared_scripts/bin/gcc/gcc-4.5.0 --with-gmp-lib=/usr/lib64 --with-mpfr-lib=/usr/lib64 --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++ 
checking build system type... x86_64-unknown-linux-gnu 
checking host system type... x86_64-unknown-linux-gnu 
checking target system type... x86_64-unknown-linux-gnu 
checking for a BSD-compatible install... /usr/bin/install -c 
checking whether ln works... yes 
checking whether ln -s works... yes 
checking for a sed that does not truncate output... /bin/sed 
checking for gawk... gawk 
checking for gcc... gcc -m64 
checking for C compiler default output file name... a.out 
checking whether the C compiler works... yes 
checking whether we are cross compiling... no 
checking for suffix of executables... 
checking for suffix of object files... o 
checking whether we are using the GNU C compiler... yes 
checking whether gcc -m64 accepts -g... yes 
checking for gcc -m64 option to accept ISO C89... none needed 
checking for g++... g++ 
checking whether we are using the GNU C++ compiler... yes 
checking whether g++ accepts -g... yes 
checking for gnatbind... no 
checking for gnatmake... no 
checking whether compiler driver understands Ada... no 
checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2 
checking for objdir... .libs 
checking for the correct version of gmp.h... no 
configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+. 
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify 
their locations. Source code for these libraries 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, MPFR and/or MPC 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. 
Linux:>~/shared_scripts/bin/gcc/gcc-4.5.0 1041> 

Il seguente le librerie sono presenti nelle rispettive directory

/usr/lib/libgmp.a 
/usr/lib64/libgmp.a 

/usr/lib/libmpfr.a 
/usr/lib64/libmpfr.a 

Non ho una libreria libmpc.a installata ovunque nelle scatole.

Sulla base l'errore come faccio a sapere:

a) qual è la versione corrente di libgmp.a e libmpfr.a sono installati.

b) Se sono di versione errata come posso distribuire la mia versione senza disturbare quella corrente?

+37

provare a eseguire './Contrib/download_prerequisites.sh' dalla directory di origine gcc. Ha funzionato per me (per la versione corrente di gcc però ('gcc-4.7') – Sebastian

+16

Lo script non sembra avere un'estensione .sh:'./Contrib/download_prerequisites'. – Jeroen

+0

download_prerequisites.sh è stato aggiunto in 4.6 sembra come. 4.5.0 non ce l'ha – bobpaul

risposta

7

Nella directory in cui ho queste librerie installate (/usr/gnu64/lib), ho anche un file libgmp.la (e libmpc.la e libmpfr.la file), che contengono il testo leggibile. Le informazioni sulla versione SO sono lì, ma non è esattamente la stessa 'versione prodotto'. Indica invece la compatibilità dei link.

Stavo cercando di indagare su quale versione avevo e la soluzione strana che ho trovato era quella di eseguire il GCC (4.6.1) che ho creato con l'opzione -v. In parte, ha detto:

GNU C (GCC) version 4.6.1 (x86_64-apple-darwin11.1.0) 
    compiled by GNU C version 4.6.1, GMP version 5.0.1, MPFR version 3.0.0, MPC version 0.8.2 
warning: GMP header version 5.0.1 differs from library version 5.0.2. 
warning: MPFR header version 3.0.0 differs from library version 3.1.0. 
warning: MPC header version 0.8.2 differs from library version 0.9. 

Così, sembra che ho GMP 5.0.2 installato (ma ho costruito GCC con 5.0.1), e MPFR 3.1.0 (ma ho costruito GCC 3.0.0 con) e MPC 0.9 (ma ho costruito GCC con 0.8.2). La mancata corrispondenza è dovuta al fatto che ho cercato di compilare e installare GCC 4.6.2 e presumibilmente avevo bisogno delle versioni più recenti. (Non ci sono riuscito, ma questa è un'altra storia.)

installa il librerie custom-built in /usr/gnu64/lib, e poi dire che è GCC dove trovarli con le opzioni di configurazione --with-mpfr=/usr/gnu64/lib, --with-gmp=/usr/gnu64/lib, --with-mpc=/usr/gnu/64/lib. Questi percorsi sono cablati in GCC e funzionano da lì.

+0

Ho provato lo stesso passo, ma ho copiato .a e .la in una cartella locale usando --with-gmp/mpfr nella cartella locale ma mi dà lo stesso errore. e crea gmp/mpfr/mpc da ftp://gcc.gnu.org/pub/gcc/infrastructure/ [gmp-4.3.2.tar.bz2, mpfr-2.4.2.tar.bz2, mpc-0.8.1 .tar.gz] ma costruendo stati mpc - configure: errore: versione GMP> = 4.2 richiesta mentre gcc sta ancora lo stesso errore – Prakash

+0

@Prakash: in questo caso, si supponga che GCC e la sua suite di configurazione sappiano cosa sta facendo e ottengano con la compilazione e l'installazione delle altre tre librerie, l'ho sempre fatto come operazione separata, senza riferimento a GCC (anche se GCC ha attivato la r ebuild). Credo che ci possa essere un modo per far sì che GCC costruisca e installi le librerie nel modo in cui funziona, disponendo di sorgenti per GMP, MPFR, MPC nell'albero dei sorgenti GCC. Controlla l'output './configure --help' per informazioni. –

+2

Da quando ho scritto questo, ho pensato che GCC costruisse la versione di GMP, MPFR e MPC insieme al compilatore. Ora ottengo il sorgente per la versione corrente della libreria ed estrailo nella directory di livello superiore del sorgente GCC: gmp-6.0.0, mpfr-3.1.2, ecc. Quindi creo un collegamento simbolico per ognuno di essi : 'ln -s gmp-6.0.0 gmp; ln -s mpfr-3.1.2 mpfr; ln -s mpc-1.0.2 mpc'. Quindi eseguo GCC configure e build, e GCC crea anche queste librerie. –

46

Ho avuto lo stesso problema nel tentativo di installare/compilare GCC 4.8.1. Ecco come ho risolto:

In Debian, basta eseguire questo due comandi:

apt-get install libmpc-dev 
./configure 
+1

Su Amazon Linux, è 'sudo yum install libmpc-devel' –

+4

non eseguire'./Configure', vedere https://gcc.gnu.org/wiki/FAQ#configure –

+1

Centos richiede anche 'sudo yum install libmpc -devel' – bebbo

11

Ho avuto lo stesso problema la compilazione di GCC 4.9 ramo.

Per Red Hat e Fedora sistemi basati, eseguire il seguente comando:

sudo yum install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel

Questo installerà GNU precisione multipla (MP) librerie per intero, in virgola mobile, e complessi numeri.

44

All'interno della directory gcc, fare questo comando:

./contrib/download_prerequisites 

Dopo lo script, GMP, MPFR, e MPC sarà pronto per l'uso. Continua con ./configure.

+0

Stavo cercando di installare gcc 6.2 su bash su ubuntu su windows, questo comando ha funzionato per me. Grazie! –

+1

Grazie per quello. Sono stato bloccato su una macchina senza "sudo", e questo ha risolto le mie preoccupazioni – Arnon

+0

grazie mille. Questo ha risolto anche il mio problema. –