14

我正在使用 mpc 0.8.2、mpfr 3.1.0 和 gmp 5.0.2 安装 gcc 4.5.2。我已将每个 mpc、mpfr 和 gmp 目录复制到 gcc-4.5.2 目录中(删除版本标签)。GCC 成功配置。但是,当我运行 make 时,我得到:

checking for MPFR... no
configure: error: libmpfr not found or uses a different ABI.
make[1]: *** [configure-mpc] Error 1
make[1]: leaving directory cross/build/gcc
make: *** [all] Error 2

MPFR 位于 cross/src/gcc-4.5.2/mpfr。MPFR 已经成功构建。有谁知道为什么mpc无法配置?

我认为问题可能部分与 MPFR 的库/头文件在 cross/src/gcc-4.5.2/mpfr/src 中而不是在 cross/src/gcc-4.5.2/mpfr 中有关。我所做的只是提取和复制——这是默认的目录结构。

4

6 回答 6

28

我遇到了同样的问题。但似乎发生这种情况是因为最新版本的 MPFR(在您的情况下为 3.1.0)更改了目录层次结构。

相反,在配置之前,当您在 gcc 的源目录中时运行以下命令(可能仅适用于 gcc4.5.2 或更高版本):

./contrib/download_prerequisites

它将下载必要的 MPFR、GMP 和 MPC 版本(但可能不是最新版本)并解压缩这些以进行 gcc 安装。

之后,您可以继续进行配置、制作和安装。

希望这可以帮助。

-拉基布

于 2012-04-26T19:09:06.213 回答
9

我发现如果我export C_INCLUDE_PATH=/cross/gcc-4.5.2/mpfr/src当时跑了export LD_LIBRARY_PATH=/cross/build-gcc-4.5.2/mpfr/src/.libs,最后export LIBRARY_PATH=$LD_LIBRARY_PATH一切都按预期工作。

烦人的问题是为什么 gcc 自己的配置脚本设置错误的标志。它应该知道 mpfr 的库不在 mpfr/.libs 中,而是在 mpfr/src/.libs 中,但是它将前者传递给 mpc/configure。

于 2012-02-16T00:07:50.853 回答
3

配置时试试这个:

./configure --prefix=<DIR YOU WANT TO INSTALL GCC> \
--with-gmp=<DIRECTORY YOU INSTALLED GMP> \
--with-mpc=<MPC DIR> --with-mpfr=<MPFR DIR>
于 2012-07-23T13:05:22.370 回答
3

几个小时以来我遇到了同样的问题,但我以另一种方式解决了它。

我已经删除了 gcc-4.* 和 gcc-build 等所有旧文件夹,因为里面有一个旧配置。之后,如果一切都在正确的位置,我再次使用 version-check.sh 检查。

我使用了 Debian,但它缺少 bison 和 gnu awk!为什么随便。我再次安装了这两个并开始安装 gcc。现在一切正常。

也许您有类似的问题,可以以相同的方式解决。每次启动 vbox 时我都必须检查,也许这是我的 vbox-image 的问题,所以当我启动 vbox 时,我会运行版本检查。

于 2012-10-01T09:30:24.630 回答
2

而不是 --with-mpfr=,我使用了 --with-mpfr-lib=your-mprf-dir/lib(64?) --with-mpfr-include=your-mprf-dir/include。

这对我有用。PS:mprf-3.1.0 gmp-5.0.2 mpc-0.9

于 2013-08-29T14:48:56.973 回答
1

不需要你可以这样尝试:

./configure \
--with-gmp=/opt/install/local\
--with-mpfr=/opt/install/local \
--with-mpc=/opt/install/local \
--with-gmp-include=/opt/install/build/gmp-6.0.0 \
--with-mpfr-include=/opt/install/build/mpfr-3.1.2/src \
--with-mpc-include=/opt/install/build/mpc-1.0.2/src --enable-languages=c,c++
于 2014-07-21T14:19:33.537 回答