0

我最近安装了 gcc 6.1,专门针对标题中提到的库 (gmp/mpfr/mpc) 我按照 gnu 网站所说的:

GNU 多精度库 (GMP) 版本 4.3.2(或更高版本) 构建 GCC 所必需的。如果在名为 gmp 的 GCC 源的子目录中找到 GMP 源分发,它将与 GCC 一起构建。或者,如果 GMP 已安装但不在您的库搜索路径中,则必须使用 --with-gmp 配置选项进行配置。另请参见 --with-gmp-lib 和 --with-gmp-include。只有 download_prerequisites 安装的 GMP 版本支持树内构建。

与其他库类似,即我下载了在我的 GCC 目录中复制的最后一个版本的源代码,然后在假设它与海湾合作委员会。但是,当我尝试运行一个使用 gmp 库的编译项目时,它会说:

error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or directory

所以我一直在寻找共享对象的位置,但我找不到 GCC 安装它的位置。

我应该在安装 gcc 之前先编译 GMP/MPFR 和 MPC 吗?因为我认为没有必要。如果我不需要编译 GMP/MPFR 和 MPC 应该安装在哪里的库?

一些进一步的细节:

我想我没有做任何奇怪和复杂的事情。1.我下载了gcc,把源码放在一个目录下。2. 我下载了所有这些库,作为 tar 文件;3. 在 gcc 源码根目录下创建了三个文件夹(gmp、mpfr 和 mpc)amd 在这些文件夹中展开了上一步的 tars。4. 对于 gcc 我执行了./configure --prefix=/path/to/gcc_build 5. 我执行了make 6. 然后make install

如果我不使用我可以编译和执行而不会出现问题的库,当我需要这些库时,它会在成功编译后返回我提到的错误。如果我查看lib/andlib64/路径,则没有与 gmp 库相关的任何内容。

4

1 回答 1

0

如我错了请纠正我。

我使用 cygwin 从他们的源网站编译 GCC 6.3.0,在研究后跟随这篇文章这里首先我编译 GCC 基础设施,包括 GMP、MPFR、MPC 以及 libelf、ppl(可选)。然后尝试使用此命令编译 GCC (因为我的目标是 GCC for linux,所以我的目标是 i686-pc-linux-gnu)。我编译 GCC 基础结构并添加前缀

--prefix=/opt/cross

对于 GMP、MPFR、MPC 也适用于 libelf 和 ppl。

所以当我编译 GCC 时,我可以使用。

--with-gmp=/opt/cross --with-mpfr=/opt/cross --with-mpc=/opt/cross

GCC 将自动遵循 /opt/cross 目录中所需的基础设施。

因为很多时候我试图

./contrib/download_prerequisites

按照这个方法,编译GCC总是报错。

我已经完成了这个方法,为 i686-pc-linux-gnu 编译了 GCC 和 binutils。但我还没有尝试使用 cygwin 编译 linux 内核。

对不起我的英语,对不起,如果我的答案是 OOT。

于 2017-03-16T05:37:17.653 回答