1

我被要求在 Red Hat 6 和 Solaris 10 上重新创建 GCC 4.5.1。现有的 Red Hat 6 机器安装了 4.5.1。最后一台 Solaris 10 机器最近吃掉了自己;因此,我继承了喜悦。

周围没有人知道 GCC 是用什么依赖项构建的。我们可以使用 gcc -v 轻松获得配置选项,但使用了哪些版本的 GMP、MPC 和 MPFR 是一个谜。我试过了:

  • ldd
  • 字符串
  • gcc -dM -E
  • 找到 $GCC_DIR -name *gmp*
  • 查找 $GCC_DIR -name *.h | xargs grep -i gmp $1

提前感谢你的帮助。

4

2 回答 2

1

用 . 编译源文件gcc -S -fverbose-asm。GMP 和 MFPR 的版本将作为注释写入生成的.s程序集列表文件:

# GNU C11 (Ubuntu 7.3.0-27ubuntu1~18.04) version 7.3.0 (x86_64-linux-gnu)
#       compiled by GNU C version 7.3.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP

在我的系统上,。这些版本字符串也出现在

strings /usr/lib/gcc/x86_64-linux-gnu/7/cc1

但是,我可以访问 gcc 4.1.2 编译器,它不包含以下信息:

# GNU C version 4.1.2 20080704 (Red Hat 4.1.2-55) (x86_64-redhat-linux)
#       compiled by GNU C version 4.1.2 20080704 (Red Hat 4.1.2-55).
于 2019-03-10T04:32:21.597 回答
1

官方不建议尝试从源代码下载/编译 gmp、mpfr 和 mpc。您应该先尝试从包管理器下载它:

yum install gmp-devel mpfr-devel libmpc-devel

如果做不到这一点,则doc/install.texiGCC 4.5.0 附带的版本推荐 GMP 4.3.2 或更高版本、MPFR 2.4.2 或更高版本以及 MPC 0.8.1 或更高版本。

GCC 还支持使用依赖项进行源代码树编译。较新版本的 GCC 具有contrib/download_prerequisites,旧版本中不存在。然而,该脚本的最早版本只是简单地下载 tarball 并将其解压缩到 GCC 源目录(带有剥离的组件)。GCC 会检测到它并自动构建它。

配置标志--with-mpfr等。仅当您已经在其他地方构建了依赖项时。这是最痛苦的选择,应该作为最后的手段。

于 2019-03-10T04:49:03.890 回答