3

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

4

1 回答 1

1

这取决于其他 gfortran 安装程序的位置。一般来说,不,它不会冲突。* Homebrew 旨在与第三方gfortran安装兼容 - 它定义了对通用“fortran”编译器的依赖关系,而不是特定的gfortranHomebrew 公式。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) 它不会直接影响/usr/local/bin/gfortranHomebrew 安装的内容。

安装这两个 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
...
于 2013-04-25T03:08:21.117 回答