无法配置gcc - 找不到mpfr

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有关。但我只是提取和复制了这个默认的目录结构。

6个回答

29

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

在配置之前,可以在 gcc 的源代码目录中运行以下命令(可能仅适用于 gcc4.5.2 或更新版本):

./contrib/download_prerequisites

它将下载必要的MPFR,GMP和MPC版本(但可能不是最新版本),并为gcc安装解压这些文件。

之后,您可以继续进行configure、make和make install操作。

希望这能有所帮助。

-Rakib


1
很棒的答案。这很好用。我不知道库可以自动下载。 - user1356386
1
如果您使用的是 Mac,请在脚本中将“wget”命令替换为“curl -OL”。 - gerardw
1
很棒的答案,然而在gcc 4.4中没有找到download_prerequisites脚本,所以我手动完成了。 - Denis
@Denis 很好的发现。我从来没有尝试过手动安装gcc4.4。我更新了我的答案。谢谢。你是怎么知道要下载哪些版本的呢? - Rakib
@rakib 当没有找到gmp和mpfr时,配置脚本将它们列为错误。 - Denis

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。

我在Windows上使用MinGW/msys构建gcc时遇到了同样的问题(并且仍然存在)。按照建议导出/设置这些变量并没有帮助我解决问题。设置它们的正确时间和顺序是否重要,或者还有其他我可以检查的地方吗? - René Nyffenegger
我不知道在Windows上是否会检查LD_LIBRARY_PATH/LIBRARY_PATH/C_INCLUDE_PATH。你可以尝试编辑makefile并在其中添加-I和-L选项到CFLAGS中。 - Robert Mason
2
这在MPFR 3.1中发生了变化(头文件位置),这就是为什么GCC使用旧版本的原因。新版本并没有得到严格支持,GCC基础设施下载页面仍然列出了2.4.2版本。 - rubenvb
谢谢,@rubenvb解释得很清楚。虽然我很惊讶他们没有某种自动工具来识别MPFR 3.1的目录布局。看起来它们与自90年代以来编写的每个程序版本兼容,否则那些巨大的配置脚本是用来干什么的 :P - Robert Mason

3
不需要,你可以试试这样做:

./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++

3

在配置时可以尝试以下方法:

./configure --prefix=<DIR YOU WANT TO INSTALL GCC> \
--with-gmp=<DIRECTORY YOU INSTALLED GMP> \
--with-mpc=<MPC DIR> --with-mpfr=<MPFR DIR>

3

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

我删除了所有旧文件夹,如gcc-4.*和gcc-build,因为其中有一个旧配置。之后,我使用version-check.sh检查位置是否正确。

我使用Debian,缺少bison和gnu awk!不管怎样,我重新安装了这两个软件并开始安装gcc。现在一切都好了。

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


2

我使用 --with-mpfr-lib=your-mprf-dir/lib(64?) 和 --with-mpfr-include=your-mprf-dir/include 代替了 --with-mpfr=。这对我有效。

提示:我的版本是 mprf-3.1.0、gmp-5.0.2 和 mpc-0.9。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接