GCC'yi Homebrew aracılığıyla nasıl kurarım?


79

Sadece Homebrew kullanıyorum (yani MacPorts veya Fink kullanmıyorum ve kullanmıyorum). Ayrıca manuel kurulumları minimum düzeyde tutmak istiyorum. 1

… Ama GCC'yi nasıl kurabilirim?

Her şeyden önce, elbette Xcode'u yükledim ancak şu anki sürüm düzgün bir şekilde GCC ile sunulmuyor (en az 4.5'e ihtiyacım var, ancak en son sürümü tercih ederim) - aslında, göndermiyor Uygun bir GCC ile (sadece Clang'ı gönderir) ve bu Homebrew için bir sorun gibi görünüyor…

Özel GCC ve çapraz derleyiciler listesinin farkındayım, ancak aslında bu kurulumların tümü önceden kurulmuş bir GCC'ye ihtiyaç duyuyor - en azından, brewonları Lion'da Clang'a atfediyorum ve -use-gccaçık bir şekilde işe yaramadığı için bağlayıcı hatalarıyla başarısız oluyor nedenler.

brew doctor sadece zaten bildiklerimden bahseder, GCC (4.2.x) kurulu olmadığını belirtir.


1 Daha önce MacPorts, Homebrew ve bazı manuel kurulumları karıştırdım ve bir bakım ve versiyonlama cehennemi ile sona erdi. Oraya tekrar gitmek istemiyorum.


Çıktı nedir gcc --version? Anladım i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)ve basitçe MAS'tan Xcode'u yükledim. Ayrıca çıktı echo $PATHnedir?
Gio

@Gio Aynı çıktıyı aldım. $PATHolağandır (sonuçta neredeyse boş bir sistemdir): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin… ama bunun önemli olduğunu sanmıyorum. Homebrew-alt tarafından sağlanan formüller sadece modası geçmiş ve Clang ile çalışmaz.
Konrad Rudolph

1
Neden Homebrew kullanıyorsunuz? MacPorts, birden fazla derleyici sürümünü yönetmede iyidir. MacPorts, Homebrew'in yapabileceği her şeyi yapabilir.
Jeff Burdges

@JeffBurdges Homebrew daha iyidir. Hemen hemen her kategoride.
Konrad Rudolph

2
Nasıl yani? Dürüst olmak gerekirse, çoğunlukla (a) paket açıklamaları ve (b) matematik paketlerinden yoksun olduğu için Homebrew'ten hoşlanmıyorum. Genelde MacPorts'un belki Homebrew'den altı kat daha fazla paketi var, ama evet, eksik olan gizli paketler. Genel olarak MacPorts'tan memnunum, her ne kadar açık olsa da, CPAN, CTAN, Caball, vb. Dil paketi yöneticileri ile bütünleşmelerini diliyorum
Jeff Burdges 19:14

Yanıtlar:


30

O söz GCC formül taşınmış olarak @Konrad Rudolph tarafından sağlanan çözüm artık tam olarak doğru değildir homebrew/dupesiçin homebrew/versions. Yüklenecek GCC sürümünü seçebilirsiniz. Örneğin, bu cevabı yazarken, sürüm 4.5, 4.7 ve 4.8 mevcuttur. Burada hangi sürümlerin mevcut olduğunu kontrol edebilirsiniz .

Kısacası, GCC 4.8’i kullanarak

brew tap homebrew/versions
brew install [flags] gcc48

Kullanılabilir yükleme bayraklarını kullanarak

brew options gcc48

Bunu denedim ve yüklemesini sağladım ama bu şekilde ölüyor:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
Warren P

@WarrenP Herhangi biriyle yüklediniz mi [flags]? Makinelerime bayraksız kurdum ve iyi çalışıyor. Neden gcc-4.8herhangi bir giriş dosyası olmadan aramayı denemiyor ve önemli bir hata alıp almadığınızı göremiyorsunuz? Ayrıca ls /usr/local/Cellar/gcc48/4.8.0/binbu dizinin içerip içermediğini kontrol etmeye çalışın gcc-4.8.
yihangho

Gcc-4.8 içerir ve gcc-4.8 --versionçalışır ancak adlandırılmış ikincil araca çalıştırılamaz asve böylece ölür.
Warren P

Hmm ... Açıkçası bunu nasıl çözeceğimi bilemiyorum. Belki biraz daha tecrübeli bir kullanıcı için beklemeliyiz ...
yihangho 29:13

2
Ya o @nkint veya eklenti alias g++='g++-4.8'Gözlerinde farklı .bashrc.
yihangho

38

Homebrew çözümü

Kendi soruma cevap vermek için, homebrew-versionsartık GCC'nin oldukça güncel bir formülü var . Kullanarak yüklenebilir

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

[flags]Gerekli tüm dilleri nerede içermelidir, örneğin ( --enable-cxx --enable-fortran).

Bu, çalıştırılabilirleri bir sonek ile kuracak, yani çatışmaları önleyecek gccşekilde erişilmesi gcc-versiongerekiyor. Gerekirse, bu sürümü varsayılan yapmak için uygun sembolik bağlantılar oluşturabilirsiniz.

Manuel kurulum

Alternatif olarak , güncel bir GCC (yazma zamanından itibaren) aşağıdaki kabuk betiği kullanılarak elle derlenebilir :

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

Bu GCC'yi yola çıkaracak /usr/gcc-4.7.0. Şimdi tek yapmanız gereken, çalıştırılabilir dosyalara sembolik bağlantılar oluşturmak veya bindizini $PATHdeğişkene eklemek .


1
Şarabın çalışan bir versiyonunu derlemeye çalışırken, aynı zamanda eksik bir gcc problemi ile karşılaştım - maalesef v4.7'yi homebrew aracılığıyla kurmak bana bazı hatalar verdi; bu yüzden onu brew tap homebrew/dupestakip ederek Apple v4.2'ye gittim brew install apple-gcc42. Bu çalışma gcc ve şarap almak için bana yardımcı oldu. İkili
iolsmit

@iolsmit GCC 4.7 kurulumunu kesinlikle temiz ve güncel bir Homebrew ile tekrar denemelisiniz. Bir cazibe gibi çalışması gerekir. Değilse, lütfen Homebrew-dupes bakımcılarına bir hata gönderin.
Konrad Rudolph

3
brew tap homebrew/dupes; brew install gcc --use-llvm. Bakınız github.com/Homebrew/homebrew-dupes/issues/20
phs

@KonradRudolph her yerde Döndüğüm, sorduğum soruları yanıtlıyorsun! Teşekkürler :)
Rik Smith-Unna

1
@Warren Bağırmana gerek yok - ama hatırlattığın için teşekkürler, çünkü Yihang aslında şimdi kabul ettiğim güncel bir cevap verdi.
Konrad Rudolph

13

Bugün bu eski yazıyla bağlantı kuran birini gördüm. Şu an GCC'yi homebrew'e kurmanın en iyi yolu tam da budur brew install gcc. Eğer XCode Komut Satırı Araçları varsa (bunlar XCode'dan ayrıdır; onları kurabilirsiniz xcode-select --install) kurulu ise, önceden derlenmiş bir versiyon (çok hızlı olan) yüklenir.


3

Benim de bu problemim vardı. Dahası, Mac'in llvm-gcc'nin standart (eski) kurulumuyla gelmeyen gfortran kullanmam gerekiyor.

Güncel olmak için gcc'nin Yüksek Performanslı Bilgi İşlem kurulumlarını buldum ve Lion'da harika çalışıyordum.


Bunu denedim. Sadece işe yaramadı, aynı zamanda kullandığı kurulum tekniği oldukça tehlikeli. Her şeyi dikkatlice geri almak bir saatimi aldı.
Bob Aman

2
Ah, önerdiği şekilde kurmadığımı söylemeliydim. Ben sadece dosyayı açıyorum ve istediğim ikiliye bir sembolik bağlantı yapıyorum. Genellikle bu, ~ / bin / veya benzeri bir şey yoluma "yerel" bir şey ekleyerek yapılır.
cm2

Evet, bu çok daha akıllıca olurdu. Takma prosedürü çıldırtıcı somunlar ve ben sadece körlemesine gitmekten çok daha fazla düşünmeliydim.
Bob Aman

3

Herhangi birisinin bu eski konuya bakması durumunda, şu anda kabul edilen yanıtta kullanılan homebrew / versiyonlar, homebrew / core lehine kaldırılmıştır . Sadece koş .brew install <formula>


Bunun OP’nin GCC’yi Homebrew aracılığıyla nasıl kuracağı sorusuyla nasıl bir ilgisi olduğunu açıklayabilir misiniz?
fsb,

@ fsb Yanıt güncellendi.
Avi

Bu kabul edilen cevap üzerine yapılan bir yorumdan daha fazlası. OP'nin sorusunu ele almadığı için bir cevap olmamalı. Yeterli üne sahip olduğunuzda, yorum ekleyebilir ve takip eden sorular sorabilirsiniz. İtibar kazanmak için net ve özlü soruları yanıtlayın .
fsb

Bunun değiştiği demleme versiyonunu belirtmek için yeni bir soru sorulmalı mı? Bu eski yazıyı düzeltmek düşük fayda, yüksek gecikme gibi görünüyor.
bmike

Eğer yeterli itibar puanım olsaydı, kabul edilen çözüme bunun yerine yorum yapardım. Bunu kendin yapmaktan çekinme.
Avi

0

Bunu deneyebilirsiniz - https://github.com/kennethreitz/osx-gcc-installer - Homebrew ve diğerleriyle (Ruby) paketleri derlemek için Lion'a yükselttikten sonra başarıyla kullandım.

Beni okuyarak:

OSX GCC Yükleyici Yalnızca GCC ve ilgili araçları istiyorsanız, büyük Xcode yükleyicisini indirmek ve kurmak çok büyük bir güçlüktür.

Osx-gcc-installer, temel derleyicileri önceden oluşturulmuş ikili paketlerden kurmanıza izin verir veya kendi yükleyicinizi oluşturmanıza yardımcı olur.


Bu yalnızca Xcode tarafından da yüklenen sürümleri yükler. Başka bir deyişle: modası geçmiş ve aslında GCC değil LLVM-GCC.
Konrad Rudolph

1
Eski: Evet. Paketin amacı, Xcode sevk edilen yardımcı programları, ancak Xcode için gerekli tüm diğer büyük bileşenler olmadan olmasıdır. GNU GCC değil: Yanlış. /usr/bin/gccllvm gcc'ye bir bağlantıdır, ancak .bash_profile veya uygun bir dosyaya yapılan açık referans /usr/bin/gcc-4.2veya ayar export CC="gcc-4.2", sorunu da hafifletir. (Ayrıca bu Yığın Taşması sorusuna bakın.)
Jason Salaz

2
Bu projenin Apple'ın resmi Xcode Komut Satırı Araçları tarafından değiştirildiğine dikkat edin: kennethreitz.org/essays/xcode-gcc-and-homebrew
Arto Bendiken
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.