构buildGCC需要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)如果版本不正确,我怎样才能部署我自己的版本,而不打扰现有版本?
在我安装这些库的目录( /usr/gnu64/lib
)中,我也有一个libgmp.la
文件(以及libmpc.la
和libmpfr.la
文件),其中包含可读的文本。 SO版本信息就在那里,但是与“产品版本”不太一样。 它告诉链接兼容性。
我试图调查我使用的是哪个版本,而我想到的奇怪的解决scheme是运行使用-v
选项构build的GCC(4.6.1)。 它部分说:
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.
所以,看来我已经安装了GMP 5.0.2(但是我用5.0.1构build了GCC)和MPFR 3.1.0(但我用3.0.0构build了GCC)和MPC 0.9(但是我用0.8.2构build了GCC )。 不匹配是因为我试图编译和安装GCC 4.6.2,可能需要更新的版本。 (我没有成功,但这是一个不同的故事。)
我在/usr/gnu64/lib
安装自定义的库,然后告诉GCC使用configuration选项--with-mpfr=/usr/gnu64/lib
,– --with-gmp=/usr/gnu64/lib
,– --with-mpc=/usr/gnu/64/lib
。 这些path硬连线到GCC,它从那里工作。
我有同样的问题,试图安装/编译GCC 4.8.1。 这是我解决的方法:
在Debian中,只需运行这两个命令:
apt-get install libmpc-dev ./configure
在gcc目录中,执行以下命令:
./contrib/download_prerequisites
在该脚本之后,GMP,MPFR和MPC将准备好使用。 继续执行./configure
。
编译GCC 4.9分支时遇到同样的问题。
对于基于Red Hat和Fedora的系统,运行以下命令:
sudo yum install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel
这将安装用于整数,浮点和复数的GNU多精度(MP)库。