【问题标题】:Does installing gfortran with homebrew and with an installer create a conflict?使用自制软件和安装程序安装 gfortran 会产生冲突吗?
【发布时间】:2013-01-08 19:51:53
【问题描述】:

我正在按照在线教程使用自制软件安装一些 Python 模块,其中一个步骤是使用 brew install gfortran 安装 gfortran。后来,我尝试使用另一个第三方安装脚本来安装一些 Python 模块,后来我意识到脚本所做的部分工作是下载并运行 http://r.research.att.com/tools/gcc-42-5666.3-darwin11.pkg。我对 gfortran 了解不多,但查看the brew formula for gfortran 似乎 brew 使用的版本与 att.com 不同。这会导致未来出现问题吗?我又做了brew uninstall gfortranbrew install gfortran,到目前为止,事情似乎是一样的(我尝试重新编译我之前编译的旧代码),但我不确定所有 att.com pkg 做了什么。 (如果重要的话,我有 OS X 10.8.2 和 XCode 4.2)。

【问题讨论】:

    标签: osx-mountain-lion homebrew gfortran


    【解决方案1】:

    这取决于其他 gfortran 安装程序的位置。一般来说,不,它不会冲突。 * Homebrew 旨在与第三方 gfortran 安装兼容 - 它定义了对通用“fortran”编译器的依赖关系,而不是特定的 gfortran Homebrew 公式。 Homebrew 保留在 /usr/local 下,将主要安装粘贴在 /usr/local/Cellar 中,并明智地将符号链接到 /usr/local/lib。安装到 /usr/local 的其他安装程序只会阻止 Homebrew 将其自己的编译器链接到其中,但会与使用 fortran 编译器的其他公式一起使用。 (假设 gfortran 构建选项是兼容的。)

    您链接到的特定 gcc-42 安装程序安装到 /usr,而不是 /usr/local。** 它的二进制文件后缀为“-4.2”;也就是说,它会安装cpp-4.2g++-4.2gfortran-4.2 等。所以 a) 与 Homebrew gfortran 没有直接冲突,并且 b) 它不会直接影响 Homebrew 安装的 /usr/local/bin/gfortran

    安装了这两个 gfortrans 的东西会选择哪个编译器,这取决于构建的工作方式,但大多数人会寻找普通的 gfortran,因此会找到 Homebrew 的,除非你明确指示它们AT&T 提供的。您没有指定如何构建东西,但由于您使用的是 brew,我假设它是通过 brew 或命令行工具,在这种情况下,我认为他们都可能看到 Homebrew gfortran 并忽略这个。查看他们构建过程的详细输出以确定确定。


    *当然取决于您所说的“冲突”。

    **旁注:AFAIK 没有简单的方法可以通过查看包或安装管理器来解决这个问题。我只是在运行该安装程序之前和之后做了一个find /usr,并在输出上做了一个diff

    $ diff usr_before_any_installs.txt usr_after_att_install.txt | grep '^[<>]'
    > /usr/bin/c++-4.2
    > /usr/bin/cpp-4.2
    > /usr/bin/g++-4.2
    > /usr/bin/gcc-4.2
    > /usr/bin/gfortran-4.2
    > /usr/bin/i686-apple-darwin11-cpp-4.2.1
    > /usr/bin/i686-apple-darwin11-g++-4.2.1
    > /usr/bin/i686-apple-darwin11-gcc-4.2.1
    > /usr/bin/i686-apple-darwin11-gfortran-4.2.1
    > /usr/include/gcc
    > /usr/include/gcc/darwin
    > /usr/include/gcc/darwin/4.2
    ...
    

    【讨论】:

    • 谢谢,安德鲁。我对 brew 和编译器的理解通常比我问这个问题时更好,但你的回答仍然很有帮助,因为我没有弄清楚 AT&T 安装程序做了什么或者它如何与 brew 交互。我原以为它可能与/usr/local 相关联并覆盖了brew 安装,但现在我知道事实并非如此。我想最重要的是,由于/usr/local 在我的路径上领先于/usr,因此安装程序并没有真正影响我使用gfortran 作为编译器所做的任何事情。
    • 不客气!我将在这里回答一个小问题,作为自己学习 Homebrew 和 OS X 编译器工具链的一种方式。
    猜你喜欢
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 2014-10-05
    • 2015-03-16
    • 2015-11-18
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多