Como instalo o GCC via Homebrew?

79

Estou usando o Homebrew exclusivamente (ou seja, não uso e não uso MacPorts ou Fink). Também quero reduzir ao mínimo as instalações manuais. 1 1

… Mas como posso instalar o GCC?

Antes de tudo, é claro que instalei o Xcode, mas a versão atual não é fornecida com um GCC decentemente atualizado (eu preciso de pelo menos 4.5, mas preferiria o mais recente) - na verdade, ele não é fornecido com um GCC adequada em todos os (apenas navios Clang) e que parece ser um problema para Homebrew ...

Estou ciente de uma lista de GCC personalizados e de compiladores cruzados, mas na verdade todas essas instalações exigem um GCC já instalado - pelo menos, breweles falham com erros de vinculador no Lion, que eu atribuo a Clang, e -use-gccnão funcionam por óbvios razões.

brew doctor menciona apenas o que eu já sei, que não há GCC (4.2.x) instalado.


1 Eu já misturei MacPorts, Homebrew e algumas instalações manuais e acabei com um inferno de manutenção e versão. Eu não quero ir lá novamente.

Konrad Rudolph
fonte
Qual é o resultado de gcc --version? Eu recebo i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)e simplesmente instalei o Xcode no MAS. Também qual é o resultado echo $PATH?
Gio
@Gio Eu tenho a mesma saída. $PATHé o habitual (afinal, este é um sistema quase vazio): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin… mas não acho que isso importe. As fórmulas fornecidas pelo homebrew-alt estão desatualizadas e não funcionam com o Clang.
Konrad Rudolph
1
Por que usar o Homebrew? O MacPorts é bom em gerenciar várias versões de compiladores. E o MacPorts pode fazer qualquer coisa que o Homebrew possa fazer.
Jeff Burdges
@JeffBurdges Homebrew é melhor. Em praticamente qualquer categoria.
Konrad Rudolph
2
Como assim? Para ser sincero, não gosto do Homebrew principalmente porque não possui (a) descrições de pacotes e (b) pacotes matemáticos. No geral, o MacPorts tem talvez seis vezes mais pacotes que o Homebrew, mas sim, são os pacotes obscuros que estão faltando. Estou feliz com MacPorts geral, embora, obviamente, eu gostaria que eles se integram com gestores de pacotes linguagem como CPAN, CTAN, Caball, etc.
Jeff Burdges

Respostas:

30

A solução fornecida por @Konrad Rudolph não está mais correta, pois a fórmula do GCC mencionada foi movida de homebrew/dupespara homebrew/versions. Você pode escolher qual versão do GCC instalar. Por exemplo, no momento da redação desta resposta, as versões 4.5, 4.7 e 4.8 estão disponíveis. Você pode conferir quais versões estão disponíveis aqui .

Em resumo, você pode instalar o GCC 4.8 usando

brew tap homebrew/versions
brew install [flags] gcc48

Você pode visualizar os sinalizadores de instalação disponíveis usando

brew options gcc48
yihangho
fonte
Eu tentei isso e consegui instalar, mas ele morre assim: #gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
Warren P
@WarrenP Você instalou com algum [flags]? Nas minhas máquinas, instalei sem bandeiras e funciona bem. Por que você não tenta ligar gcc-4.8sem nenhum arquivo de entrada e vê se recebe um erro fatal? Tente também ls /usr/local/Cellar/gcc48/4.8.0/bine veja se esse diretório contém gcc-4.8.
yihangho
Ele contém o gcc-4.8 e gcc-4.8 --versioné executado, mas não pode ser executado na ferramenta secundária denominada ase, portanto, morre.
22813 Warren P
Hmm ... Francamente, não tenho ideia de como resolver isso. Talvez tenhamos de esperar por algum usuário mais experiente ...
yihangho
2
@nkint Ou adicione isso alias g++='g++-4.8'ao seu .bashrc.
precisa saber é o seguinte
38

Solução homebrew

Para responder minha própria pergunta, homebrew-versionsagora existe uma fórmula bastante atualizada do GCC . Pode ser instalado usando

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

Onde [flags]deve incluir todos os idiomas necessários, por exemplo ( --enable-cxx --enable-fortran).

Isso instalará os executáveis ​​com um sufixo, ou seja gcc, deve ser acessado gcc-versionpara evitar conflitos. Se necessário, é possível criar links simbólicos apropriados para tornar esta versão o padrão.

Instalação manual

Como alternativa , um GCC atualizado (no momento da redação) pode ser compilado manualmente usando o seguinte script de shell:

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

Isso colocará o GCC no caminho /usr/gcc-4.7.0. Agora tudo que você precisa fazer é criar links simbólicos para os executáveis ​​ou adicionar o bindiretório à $PATHvariável.

Konrad Rudolph
fonte
1
Tentando compilar uma versão funcional do wine, também encontrei o problema de um gcc ausente - infelizmente a instalação da v4.7 via homebrew causou alguns erros; então eu fui para a Apple v4.2 usando brew tap homebrew/dupesseguido por brew install apple-gcc42. Isso me ajudou a conseguir um gcc e vinho funcionais. Você também pode obter os binários (como o homebrew) a partir daqui: r.research.att.com/tools
iolsmit
@iolsmit Você definitivamente deve tentar a instalação do GCC 4.7 novamente com um Homebrew limpo e atualizado. Deve funcionar como um encanto. Caso contrário, registre um bug nos mantenedores do Homebrew-dupes.
Konrad Rudolph
3
brew tap homebrew/dupes; brew install gcc --use-llvm. Veja github.com/Homebrew/homebrew-dupes/issues/20
phs
@KonradRudolph em todos os lugares que eu viro, você está respondendo às perguntas que estou fazendo! Obrigado :)
Rik Smith-Unna
1
@ Warren Não há necessidade de gritar - mas obrigado pelo lembrete, porque yihang realmente postou uma resposta melhor e atualizada que eu já aceitei.
precisa
13

Eu vi alguém link para este post antigo hoje. A melhor maneira de instalar o GCC no homebrew agora é apenas brew install gcc. Se você tiver as Ferramentas de Linha de Comando do XCode (elas são separadas do XCode; você pode instalá-las com xcode-select --install) instaladas, uma versão pré-compilada será instalada (o que é muito rápido).

Tim Smith
fonte
3

Eu também tive esse problema. Além disso, preciso usar o gfortran, que não vem com a instalação padrão (desatualizada) do llvm-gcc do Mac.

Descobri que as versões do High Performance Computing do gcc estão atualizadas e funcionam muito bem no Lion.

cm2
fonte
Eu tentei isso. Não apenas não funcionou, mas a técnica de instalação que ele está usando é bastante perigosa. Levei cerca de uma hora para desfazer tudo com cuidado.
Bob Aman
2
Ah, eu deveria ter dito que não instalo da maneira que ele sugere. Apenas descompacte o arquivo e faça um link simbólico para o binário que eu quero, certificando-me de que o link simbólico esteja em algum lugar no meu CAMINHO. Normalmente, isso é feito adicionando algo "local" ao meu caminho, como ~ / bin / ou algo assim.
Cm2 #
Sim, isso seria muito mais sensato. Seu procedimento de instalação é muito doido e eu deveria ter assumido o máximo, em vez de tentar cegamente.
Bob Aman
3

Caso alguém veja esse thread antigo, parece que o homebrew / versões, usado na resposta atualmente aceita, foi preterido em favor do homebrew / core . Apenas corra brew install <formula>.

Avi
fonte
Você pode explicar como isso tem a ver com a pergunta do OP, que é como instalar o GCC via Homebrew?
Fsb #
@fsb A resposta é atualizada.
Avi
Este é mais um comentário sobre a resposta aceita. Não deve ser uma resposta em si, porque não aborda a questão dos POs. Depois de ter reputação suficiente, você poderá adicionar comentários e fazer perguntas de acompanhamento. Para ganhar reputação, responda perguntas claras e concisas .
Fsb
Uma nova pergunta deve ser solicitada para especificar a versão do brew onde isso muda? Corrigir esse post antigo parece baixo benefício, alto atraso.
Bmike
Se eu tivesse pontos de reputação suficientes, teria comentado a solução aceita. Sinta-se livre para fazer isso sozinho.
Avi
0

Você pode tentar isso - https://github.com/kennethreitz/osx-gcc-installer - Eu o usei com sucesso após a atualização para o Lion para compilar pacotes com o Homebrew e outros (Ruby).

Do leia-me:

Instalador OSX GCC Baixar e instalar o enorme instalador Xcode é um grande aborrecimento, se você quer apenas o GCC e ferramentas relacionadas.

O osx-gcc-installer permite instalar os compiladores essenciais a partir de pacotes binários pré-criados ou ajuda a criar seu próprio instalador.

Darren Newton
fonte
Isso instala apenas as versões também instaladas pelo Xcode. Em outras palavras: desatualizado, e não realmente o GCC, mas o LLVM-GCC.
Konrad Rudolph
1
Desatualizado: Sim. O objetivo do pacote é que sejam os utilitários fornecidos pelo Xcode, mas sem todos os outros grandes componentes necessários para o Xcode. Não GNU GCC: errado. /usr/bin/gccé um link simbólico para o llvm gcc, mas a referência explícita /usr/bin/gcc-4.2ou a configuração export CC="gcc-4.2"no seu .bash_profile ou arquivo adequado também atenua o problema. (Veja também este Stack Overflow pergunta.)
Jason SALAZ
2
Note-se que este projecto foi substituída por oficiais Ferramentas de linha de comando da Apple para Xcode: kennethreitz.org/essays/xcode-gcc-and-homebrew
Arto Bendiken