【问题标题】:Can't find gmp or mpfr library after installation of gcc安装 gcc 后找不到 gmp 或 mpfr 库
【发布时间】:2020-05-08 03:08:59
【问题描述】:

我按照https://gcc.gnu.org/wiki/InstallingGCC 中的简单步骤在 linux 中安装了 gcc-9.3.0 安装成功。我认为这个过程会一路安装 gmp 和 mpfr。但我找不到 gmp 或 mpfr 库。

我应该在执行 ./configure 时安装它们吗?

【问题讨论】:

  • 您链接的网页显示了几个版本(并详细讨论了gmp+mpfr),您具体遵循了哪些步骤?你用的是什么linux,你不能用你的包管理器安装gmp/mpfr吗? gcc 是在抱怨它在运行时缺少 gmp/mpfr,还是您想要 gmp 和 mpfr 供您自己在其他程序中使用?
  • 我跟着底部的那个。 gcc 已成功安装,但我想要 gmp 和 mpfr 用于其他用途。
  • 啊,是的,这些说明是为只关心 gcc 而不想直接使用 gmp/mpfr 的人准备的(仅作为 gcc 内部使用的工具)。您需要分别安装 gmp 和 mpfr,或者使用您的包管理器,或者按照各自网页上的说明(下载、配置等)。
  • 感谢您的回答。那样的话,我是不是应该先安装gmp和mpfr,再安装gcc?
  • 如果你有一个有效的 GMP,扔掉它会很可惜。答案取决于你在哪里安装东西。如果您在非标准位置安装动态版本的 GMP 并使用它来构建 gcc,那么,如 gcc 页面上所述,您可能会遇到 gcc 在运行时找不到它的问题。

标签: linux gcc installation gmp


【解决方案1】:

您可以通过两种不同的方式为 GCC 提供先决条件 外部主机库,如 GMPMPFR:

  1. 在配置之前,从 顶级 GCC 源目录。它将从 相应的项目存储库。这就是你所要做的;海合会将 在为自己运行 configure 之前配置和构建这些库 或其目标库。

  2. --with-gmp等配置指向 已安装相应的宿主库。

这两种方法都有其优缺点:

第一种方法需要互联网连接并且构建时间会增加。 然而,构建时间的增加对于构建时间来说可以忽略不计 需要编译器的其余部分及其目标库。

另一方面,您将获得正确的版本和构建选项 GCC 首选的主机库,无论哪个库版本 可能已经安装在主机上。而这个配置 交叉编译时更加方便和独立 GCC(因为它是关于 host 库的,因此您必须安装 host 上的必备库;在 build 上安装它是 无意义)。如果你是,它会更健壮/独立 分发构建的编译器:如果预期的主机没有 GMP 等安装,那么您将在该主机上做额外的工作。

第二种方法更复杂,因为您必须构建 / 在主机上安装先决条件;正确的版本,正确的 配置标志等

另一方面,您只需构建一次先决条件即可 每个主机。 当您不止一次配置/重建编译器时,对于 例如当你在做 GCC 开发时,它的周期会快一点。

在第一种情况下,lib 版本独立于主机版本 图书馆; GCC 实际上并不关心这些库是否是 出现在主机上,因为它正在使用它自己的“副本”。图书馆 将静态链接到可执行文件中,因此您将找不到它们 任何地方(也许 GCC 可以选择为 库,我不知道)。

我非常喜欢第一种方法,因为它是独立的 并且更容易,特别是因为我经常将 GCC 构建为 加拿大交叉,即构建≠主机≠目标≠构建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2012-03-16
    • 2013-11-10
    • 2012-03-07
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多