GCC是使用哪些版本的GMP、MPC和MPFR进行编译的?

3
我被要求在Red Hat 6和Solaris 10上重新构建GCC 4.5.1版本。已有Red Hat 6机器安装了4.5.1版本。最近,最后一台Solaris 10机器不可用了,而我继承了这个项目。
周围没有人知道GCC是使用哪些依赖项构建的。我们可以使用gcc -v轻松获取configure选项,但使用了哪些版本的GMP、MPC和MPFR却是一个谜。我尝试过:
- ldd - strings - gcc -dM -E - find $GCC_DIR -name *gmp* - find $GCC_DIR -name *.h | xargs grep -i gmp $1
感谢您的帮助。
2个回答

3

使用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).

2
这句话的意思是:“官方不建议尝试从源代码下载/编译gmp、mpfr和mpc。你应该首先尝试从软件包管理器中下载它们。”
yum install gmp-devel mpfr-devel libmpc-devel

如果没有的话,GCC 4.5.0 自带的 doc/install.texi 推荐使用 GMP 4.3.2 或更新版、MPFR 2.4.2 或更新版,以及 MPC 0.8.1 或更新版。
GCC 还支持使用依赖项进行源代码树编译。新版本的 GCC 提供了 contrib/download_prerequisites,而旧版本没有此文件。但是,该脚本的最早版本只需下载 tar 文件并将其解压到 GCC 源目录中(具有削减的组件)。GCC 检测到它后会自动构建。
配置标志 --with-mpfr 等仅在您已经在其他地方构建了依赖项的情况下才使用。这是最痛苦的选项,应作为最后的选择。

很感谢您的回复,可惜这并没有帮助我们确定问题所在。另外,为了澄清一下,不建议的做法是下载源代码[...],然后将它们安装到非标准位置,并使用 --with-gmp=/some/silly/path/gmp 配置GCC[...]。如果是这种情况,配置选项会给我们一些线索。除了本问题范围之外,我们还有一些要求需要维护配置管理(这在此案例中没有满足),并使用符合各种要求的软件版本。 - undefined

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