如何通过Homebrew安装GCC?


79

我专门使用Homebrew(即,我不会也不会使用MacPorts或Fink)。我还希望将手动安装的数量降到最低。1个

…但是我该如何安装GCC?

首先,我当然已经安装了Xcode,但是当前版本没有附带最新的GCC(我至少需要4.5,但希望使用最新版本的GCC)–实际上,它并没有发布完全具有适当的GCC (它仅适用 Clang),这对于Homebrew似乎是一个问题……

我知道一个自定义GCC和交叉编译器的列表,但实际上所有这些安装都需要一个已安装的GCC-至少,brew它们会因Lion上的链接器错误而失败,我将其归因于Clang,并且-use-gcc显然无法正常工作原因。

brew doctor 仅提及我所知道的,没有安装GCC(4.2.x)。


1我以前混合了MacPorts,Homebrew和一些手动安装,但最终得到了维护和版本控制。我不想再去那儿。


输出是gcc --version什么?我得到了 i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00),我只是从MAS安装了Xcode。还有什么输出echo $PATH
Gio 2012年

@Gio我得到相同的输出。$PATH通常是这样(毕竟这是一个几乎空白的系统):/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin…但是我认为这并不重要。homebrew-alt提供的公式已经过时,不能与Clang一起使用。
康拉德·鲁道夫2012年

1
为什么要使用自制软件?MacPorts擅长管理多个版本的编译器。MacPorts可以做Homebrew可以做的任何事情。
杰夫·伯奇斯

@JeffBurdges Homebrew更好。在几乎任何类别中。
2014年

2
怎么会这样?老实说,我不喜欢Homebrew主要是因为它缺少(a)软件包描述和(b)数学软件包。总体而言,MacPorts的软件包数量可能是Homebrew的六倍,是的,这是缺少的晦涩软件包。我很高兴与整体的MacPorts,虽然很明显,我想他们会用语言包管理器如CPAN,CTAN,Caball等整合
杰夫Burdges

Answers:


30

@Konrad Rudolph提供的解决方案不再完全正确,因为他提到的GCC公式已从homebrew/dupes移到homebrew/versions。您可以选择要安装的GCC版本。例如,在编写此答案时,版本4.5、4.7和4.8可用。您可以在此处查看可用的版本。

简而言之,您可以使用来安装GCC 4.8

brew tap homebrew/versions
brew install [flags] gcc48

您可以使用来查看可用的安装标志

brew options gcc48

我尝试了这个,然后安装了它,但是它死了,就像这样:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
Warren P

@WarrenP您安装了[flags]吗?在我的机器上,我安装时没有任何标志,并且运行正常。为什么不尝试在gcc-4.8没有任何输入文件的情况下拨打电话,看看是否出现致命错误?还尝试ls /usr/local/Cellar/gcc48/4.8.0/bin查看该目录是否包含gcc-4.8
yihangho

它确实包含gcc-4.8并gcc-4.8 --version可以运行,但是无法执行到名为的辅助工具as,因此它死了。
沃伦·P

嗯...坦白地说,我不知道该如何解决。也许我们必须等待更多有经验的用户...
yihangho

2
@nkint或者添加alias g++='g++-4.8'您的.bashrc
yihangho

38

自制解决方案

为了回答我自己的问题,homebrew-versions现在有了一个相当最新的GCC公式。可以使用安装

brew install [flags] https://raw.github.com/Homebrew/homebrew-versions/gcc48.rb

其中[flags]应包含所有必需的语言,例如(--enable-cxx --enable-fortran)。

这将安装带有后缀的可执行文件,即gcc必须进行访问gcc-version以避免冲突。如有必要,可以创建适当的符号链接以使该版本成为默认版本。

手动安装

或者,可以使用以下Shell脚本手动编译最新的GCC(截至撰写本文时):

VERSION=4.7.0
PREFIX=/usr/gcc-$(VERSION)
LANGUAGES=c,c++,fortran
MAKE=make
# Or
# MAKE='make -j 4' # to compile using four cores

brew-path() { brew info $1 | head -n3 | tail -n1 | cut -d' ' -f1; }

# Prerequisites

brew install gmp
brew install mpfr
brew install libmpc

# Download & install the latest GCC

mkdir -p $PREFIX
mkdir temp-gcc
cd temp-gcc
wget ftp://ftp.gnu.org/gnu/gcc/gcc-$VERSION/gcc-$VERSION.tar.gz
tar xfz gcc-$VERSION.tar.gz
rm gcc-$VERSION.tar.gz
cd gcc-$VERSION

mkdir build
cd build

../configure \
   --prefix=$PREFIX \
   --with-gmp=$(brew-path gmp) \
   --with-mpfr=$(brew-path mpfr) \
   --with-mpc=$(brew-path libmpc) \
   --program-suffix=-$VERSION \
   --enable-languages=$LANGUAGES \
   --with-system-zlib \
   --enable-stage1-checking \
   --enable-plugin \
   --enable-lto \
   --disable-multilib

$MAKE bootstrap

make install

# Uncomment for cleanup …
# cd ../../..
# rm -r temp-gcc

这将使GCC步入正轨/usr/gcc-4.7.0。现在,您所需要做的就是创建指向可执行文件的符号链接或将bin目录添加到$PATH变量。


1
尝试编译葡萄酒的工作版本时,我还遇到了缺少gcc的问题-不幸的是,通过自制软件安装v4.7给了我一些错误;因此,我使用brew tap homebrew/dupes紧随其后的是Apple v4.2 brew install apple-gcc42。这帮助我获得了有效的海湾合作委员会和葡萄酒。您也可以从此处获取二进制文件(如自制软件一样):r.research.att.com/tools
iolsmit 2012年

@iolsmit您绝对应该使用干净的最新Homebrew再次尝试安装GCC 4.7。它应该像魅力一样工作。如果不是,请向Homebrew-dupes维护者提交错误。
Konrad Rudolph

3
brew tap homebrew/dupes; brew install gcc --use-llvm。见github.com/Homebrew/homebrew-dupes/issues/20
phs

@KonradRudolph无处不在,我正在回答你所问的问题!谢谢:)
Rik Smith-Unna

1
@Warren无需大喊–但是感谢您的提醒,因为yihang实际上发布了一个更好的最新答案,我现在接受了。
Konrad Rudolph

13

我今天看到有人链接到此旧帖子。现在在自制软件中安装GCC的最佳方式就是brew install gcc。如果安装了XCode命令行工具(它们与XCode分开;可以使用进行安装xcode-select --install),则将安装预编译版本(非常快)。


3

我也有这个问题。更重要的是,我需要使用gfortran,它不是Mac的llvm-gcc的标准(过时)安装随附的。

我发现gcc的高性能计算版本是最新的,并且在Lion上运行良好。


我试过了 不仅无效,而且他使用的安装技术也很危险。花了我大约一个小时来仔细地撤消所有操作。
鲍勃·阿曼

2
哦,我应该说我不会按照他的建议进行安装。我只是解压缩文件,并建立到所需二进制文件的符号链接,请确保该符号链接位于我的PATH中。通常,这是通过在路径中添加“本地”内容来完成的,例如〜/ bin /之类的东西。
cm2

是的,那会更加理智。他的安装过程简直是疯了,我应该承担尽可能多的工作,而不是盲目尝试。
鲍勃·阿曼

3

如果有人看着这个旧线程,似乎已经弃用了当前接受的答案中使用的homebrew / versions,而赞成使用homebrew / core。快跑brew install <formula>


您能否解释一下这与OP的问题(即如何通过Homebrew安装GCC)有什么关系?
fsb

@fsb答案已更新。
阿维(Avi)

这更多地是对已接受答案的评论。它本身不应该是一个答案,因为它不能解决OP的问题。拥有足够的声誉后,您就可以添加评论并提出后续问题。要获得声誉,请回答清晰明了的问题
fsb

是否应该问一个新的问题,以指定发生变化的brew版本?修复此旧帖子似乎收益低,延迟大。
bmike

如果我有足够的信誉点,我会反而对接受的解决方案发表评论。随意自己做。
阿维(Avi)

0

您可以尝试一下-https: //github.com/kennethreitz/osx-gcc-installer-升级到Lion以与Homebrew和其他人一起编译软件包(Ruby)后,我已经成功使用了它。

从阅读我:

OSX GCC安装程序 如果您只想使用GCC和相关工具,则下载和安装大型Xcode安装程序是一件很麻烦的事情。

osx-gcc-installer允许您从预构建的二进制软件包中安装必要的编译器,或者帮助您创建自己的安装程序。


这只会安装Xcode也安装的版本。换句话说:过时了,实际上不是GCC,而是LLVM-GCC。
康拉德·鲁道夫2012年

1
过时的:是的。软件包的重点是它是Xcode附带的实用程序,但没有Xcode必需的所有其他巨大组件。不是GNU GCC:错。/usr/bin/gcc是到llvm gcc的符号链接,但是对.bash_profile或适当文件的明确引用/usr/bin/gcc-4.2或设置export CC="gcc-4.2"也可以缓解此问题。(另请参阅此堆栈溢出问题。)
杰森·萨拉兹

2
请注意,该项目已被Apple的Xcode官方命令行工具所取代:kennethreitz.org/essays/xcode-gcc-and-homebrew
Arto Bendiken 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.