构建 GCC 需要 GMP 4.2 + 、 MPFR 2.3.1 + 和 MPC 0.8.0 +

我从 http://www.netgull.com/gcc/releases/gcc-4.5.0/下载了 GCC 4.5,但是当我尝试安装/构建时,出现了以下错误:

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>

下面的库出现在各自的目录中

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


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

我没有在任何盒子里安装 libmpc.a 库。

根据这个错误,我怎么知道:

A)安装了当前版本的 libgmp.a 和 libmpfr.a。

B)如果它们的版本不正确,我怎样才能在不影响当前版本的情况下部署我自己的版本?

115548 次浏览

In the directory where I have those libraries installed (/usr/gnu64/lib), I also have a libgmp.la file (and libmpc.la and libmpfr.la files), which contain readable text. The SO version information is in there, but that is not quite the same as the 'product version'. It tells about link compatibility instead.

I was trying to investigate which version I had, and the weird solution I came up with was to run the GCC (4.6.1) that I built with the -v option. In part, it said:

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.

So, it appears that I have GMP 5.0.2 installed (but I built GCC with 5.0.1), and MPFR 3.1.0 (but I built GCC with 3.0.0) and MPC 0.9 (but I built GCC with 0.8.2). The mismatch comes about because I tried to compile and install GCC 4.6.2 and it presumably needed the newer versions. (I didn't succeed, but that's a different story.)

I install my custom-built libraries in /usr/gnu64/lib, and then tell GCC that's where to find them with the configure options --with-mpfr=/usr/gnu64/lib, --with-gmp=/usr/gnu64/lib, --with-mpc=/usr/gnu/64/lib. These paths are hard-wired into GCC and it works from there.

I had the same problem trying to install/compile GCC 4.8.1. Here is how I solved:

In Debian, just run this two commands:

apt-get install libmpc-dev
./configure

I had the same problem compiling GCC 4.9 branch.

For Red Hat and Fedora based systems, run the following command:

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

This will install the GNU multiple-precision (MP) libraries for integer, floating point, and complex numbers.

Inside the gcc directory, do this command:

./contrib/download_prerequisites

After that script, GMP, MPFR, and MPC will be ready to use. Continue with ./configure.

Centos7: sudo yum install libmpc-devel

I've changed the base_url in contrib/download_prerequisites to base_url='gcc.gnu.org/pub/gcc/infrastructure/'. Then just follow the steps from the gcc website. This worked beautifully. Hope this helpes.