使用MPFR、GMP和MPC构建GCC

使用MPFR、GMP和MPC构建GCC,gcc,gmp,mpfr,mpc,Gcc,Gmp,Mpfr,Mpc,当然,我们都知道构建GCC版本>=4.1.x需要提供补充包MPFR、GMP和MPC 有几种方法可以处理这些GCC依赖关系: 1)分别下载并构建每个支持包,然后在GCC构建期间告诉make二进制文件位于何处 2)下载每个支持包,卸载并将源代码移动到您的GCC构建目录中,make将在需要时自动构建每个包 (执行gcc src/contrib/download_先决条件脚本的操作与选项2相同) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 这两种方法都有优势吗?通过采取

当然,我们都知道构建GCC版本>=4.1.x需要提供补充包MPFR、GMP和MPC

有几种方法可以处理这些GCC依赖关系:

1)分别下载并构建每个支持包,然后在GCC构建期间告诉
make
二进制文件位于何处

2)下载每个支持包,卸载并将源代码移动到您的GCC构建目录中,
make
将在需要时自动构建每个包

(执行gcc src/contrib/download_先决条件脚本的操作与选项2相同)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

这两种方法都有优势吗?通过采取“简单路线”,将包的源代码转储到我的GCC构建目录中,并让
make
解决问题,预编译二进制文件是否提供了我所缺少的东西

在各种构建脚本中,我看到它的使用频率更高,方法是将每个包预编译为二进制文件,然后在gcc编译期间告诉
make
。这是“首选”的方式吗?为什么?


为了增加上下文,我主要针对各种ARM平台构建交叉编译器。

对于大多数用例,我认为选项2和选项1一样好。然而,我可以看到一些情况下,人们会希望手动操作

  • 软件包维护人员希望单独构建,因为他们希望为mpfr等人构建单独的软件包

  • 希望向每个包传递不同配置参数/cflag的人

  • GCC开发人员希望保持其源代码并构建较小的树,因为他们不需要对MPFR/GMP/etc进行任何更改

我没有在GCC构建系统(相当难看)上做太多的工作,但是我没有看到二进制文件构建方式的明显差异


我不是这方面的最大权威,所以YMMV;我可能错了。

默认情况下,1)将创建共享库,而gcc可能很难在运行时找到它们。到目前为止,最好也是最简单的方法是通过包管理器获取gmp/mpfr/mpc。@如果您正在构建一个可移植的交叉编译器,那么通过包管理器获取gmp/mpfr/mpc是不好的,但是我相信您关于创建共享库的观点在可移植性的环境中是绝对有效的。目前,我将继续将源代码提取到gcc构建目录中。