提问人:Programmer 提问时间:2/13/2012 最后编辑:Trevor HickeyProgrammer 更新时间:4/27/2022 访问量:128098
构建 GCC 需要 GMP 4.2+、MPFR 2.3.1+ 和 MPC 0.8.0+
Building GCC requires GMP 4.2+, MPFR 2.3.1+ and 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) 如果它们的版本不正确,我如何在不干扰当前版本的情况下部署自己的版本?
答:
在我安装这些库的目录中(),我还有一个文件(和和文件),其中包含可读文本。SO 版本信息就在那里,但这与“产品版本”并不完全相同。相反,它讲述了链接兼容性。/usr/gnu64/lib
libgmp.la
libmpc.la
libmpfr.la
我试图调查我拥有的版本,我想出的奇怪解决方案是运行我使用该选项构建的 GCC (4.6.1)。在某种程度上,它说:-v
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 构建了 GCC)和 MPFR 3.1.0(但我用 3.0.0 构建了 GCC)和 MPC 0.9(但我用 0.8.2 构建了 GCC)。出现不匹配是因为我尝试编译和安装 GCC 4.6.2,它可能需要更新的版本。(我没有成功,但那是另一回事了。
我在 中安装了我的自定义库,然后告诉 GCC 在哪里可以找到它们,使用配置选项 , , .这些路径被硬连接到 GCC 中,并从那里开始工作。/usr/gnu64/lib
--with-mpfr=/usr/gnu64/lib
--with-gmp=/usr/gnu64/lib
--with-mpc=/usr/gnu/64/lib
评论
./configure --help
ln -s gmp-6.0.0 gmp; ln -s mpfr-3.1.2 mpfr; ln -s mpc-1.0.2 mpc
我在尝试安装/编译 GCC 4.8.1 时遇到了同样的问题。这是我解决的方法:
在 Debian 中,只需运行以下两个命令:
apt-get install libmpc-dev
./configure
评论
sudo yum install libmpc-devel
sudo yum install libmpc-devel
我在编译 GCC 4.9 分支时遇到了同样的问题。
对于基于 Red Hat 和 Fedora 的系统,请运行以下命令:
sudo yum install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel
这将安装用于整数、浮点数和复数的 GNU 多精度 (MP) 库。
在 gcc 目录中,执行以下命令:
./contrib/download_prerequisites
在该脚本之后,GMP、MPFR 和 MPC 即可使用。继续 。./configure
评论
sudo
Centos7:sudo yum 安装 libmpc-devel
评论
我已将 contrib/download_prerequisites 中的base_url更改为 base_url='gcc.gnu.org/pub/gcc/infrastructure/'。然后只需按照 gcc 网站上的步骤操作即可。这效果很好。希望这会有所帮助。
评论
./contrib/download_prerequisites.sh
gcc-4.7
)./contrib/download_prerequisites