8

我正在尝试在 Mac OS 10.5.7 上交叉编译 GCC。我在安装 GMP、MPFR 和 MPC 后使用此命令配置 GCC:

../gcc-4.5.0/configure --target=$i586-elf --prefix=/usr/local/cross \
    --disable-nls \
    --enable-languages=c,c++,fortran,java,objc,obj-c++,treelang,ada \
    --without-headers --with-libiconv-prefix=/opt/local --with-gmp=/usr/local \
    --with-mpfr=/usr/local --with-mpc=/usr/local

我收到了这个错误:

checking for the correct version of gmp.h... buggy but acceptable
checking for the correct version of mpfr.h... yes
checking for the correct version of mpc.h... yes
checking for the correct version of the gmp/mpfr/mpc libraries... 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.

为什么 GCC 可以找到 GMP、MPFR 和 MPC 的标头,但找不到库?

4

7 回答 7

9

我怀疑问题可能是当您尝试构建 64 位编译器时,这些库适用于 32 位,反之亦然。

我最近能够在 MacOS X 10.6.4 上构建 GCC 4.5.1,但我自己构建并安装了 GMP、MPFR 和 MPC 库 - 在/usr/gnu64(一个非标准位置,我用于为自己的利益安装的东西)。我还使用了配置选项:

CC='gcc -m64'

强制 64 位构建。我在 Linux 上遇到了类似的问题(加上 opt-functions.awk 中的正则表达式问题 - 很容易在左大括号前用两个反斜杠修复),并发现自从我构建以来 MPFR 和 MPC 库都有更新macOS X:

  • GMP 5.0.1(而不是 4.2.4)
  • MPC 0.8.2(而不是 0.8.1)
  • MPFR 3.0.0(而不是 2.4.2)

自从我写了这篇文章,我已经稍微改变了我的方法。我现在所做的记录在Install GNU GCC on Mac中。基本上,我获取了当前版本的 GMP、MPC、MPFR 并将它们的源代码放入 GCC 源目录,并让 GCC 自己编译这些库。这使得 GCC 处理定位库。

于 2010-08-18T02:47:24.883 回答
6

你应该使用

--with-gmp=/usr/local/include \
    --with-mpfr=/usr/local/include --with-mpc=/usr/local/include

代替

--with-gmp=/usr/local \
    --with-mpfr=/usr/local --with-mpc=/usr/local
于 2011-04-20T23:32:21.090 回答
2

我在 OX 10.6.6 上编译 gcc-4.6.0 时遇到了同样的问题。我正在使用 gmp-4.3.2 ;改用 gmp-5.0.1,配置脚本似乎正确猜测“CC=gcc -std=gnu99 CFLAGS=-O2 -pedantic -m64 -mtune=core2 -march=core2”,并将其传递给 mpfr (3.0. 1) 和 mpc (0.9) ,因此使用这些或更新版本的任何人都不应收到此错误。

于 2011-04-09T00:44:28.013 回答
1

我建议通过从他们的网站下载 gmp、mpfr 和 mpc 来安装它们。然后运行./configure(在下载文件的文件夹中)和sudo make install.

然后 GCC 应该在 Mac OSX(山狮)上编译。

请注意,mpc 取决于 mpfr 和 gmp。

我用它来编译 Mac OSX 上的 pinion 内核。

于 2012-08-09T12:16:52.160 回答
0

安装了 mac 端口 mpfr、libmpc 和 gmp 后,我可以在配置脚本中添加此功能:

--with-mpc=/opt/local/var/macports/software/libmpc/0.8.2_0/opt/local
--with-gmp=/opt/local/var/macports/software/gmp/5.0.1_0/opt/local
--with-mpfr=/opt/local/var/macports/software/mpfr/3.0.0-p8_0/opt/local 

这是为了编译一个 ti msp430 工具链。

于 2011-06-28T13:11:26.353 回答
0

我刚刚解决了一个类似的问题。由于我的 CPU 是 x86_64 但我的操作系统是 32 位,所以当我安装 GMP(5.0.2) 时,它会尝试以 64 位进行配置。所以我用 ABI=32 ./configure... 之类的配置重新编译了我的 GMP,然后这个 GCC 问题就消失了。

于 2011-10-17T13:55:12.923 回答
0

在 Ubuntu 16.04 64 位中有类似的问题。使用mpc-1.0.1.tar.gz、mpfr-3.1.6.tar.xz和gmp-6.1.2.tar.xz解决

于 2017-09-27T18:25:17.010 回答