使用自制软件和安装程序安装gfortran是否会产生冲突?

时间:2013-01-08 19:51:54

标签: osx-mountain-lion homebrew gfortran

我正在关注使用自制软件安装一些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。)

1 个答案:

答案 0 :(得分: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
...