osx mountain lion -使用自制程序安装gfortran和使用安装程序安装gfortran会产生冲突吗?



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

这取决于其他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,所以会找到自制的,除非你明确地指示他们到at&t提供的一个。你没有指定你是如何构建的东西,但因为你使用brew,我假设它是通过brew或命令行工具,在这种情况下,我认为他们都可能看到Homebrew gfortran和忽略这个。查看构建过程的详细输出,以确定是否正确。


*当然,这取决于你所说的"冲突"是什么意思。

**旁注:据我所知,通过查看软件包或安装管理器,没有简单的方法可以弄清楚这一点。我只是在运行安装程序之前和之后做了一个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
...

最新更新