Bagaimana cara menginstal GCC via Homebrew?

78

saya menggunakan Homebrew secara eksklusif (mis. Saya tidak, dan tidak akan, menggunakan MacPorts atau Fink). Saya juga ingin menjaga instalasi manual seminimal mungkin. 1

... tapi bagaimana saya bisa menginstal GCC?

Pertama-tama, saya tentu saja sudah menginstal Xcode tetapi versi saat ini tidak dikirimkan dengan GCC yang sopan (saya membutuhkan setidaknya 4,5, tetapi lebih suka yang terbaru) - pada kenyataannya, itu tidak dikirimkan dengan GCC yang tepat sama sekali (hanya mengirim Dentang) dan itu tampaknya menjadi masalah bagi Homebrew ...

Saya mengetahui daftar GCC kustom dan kompiler silang tetapi pada kenyataannya semua instalasi tersebut membutuhkan GCC yang sudah diinstal - setidaknya, brew mereka gagal dengan kesalahan linker pada Lion yang saya atributkan untuk Dentang, dan -use-gcc tidak bekerja karena alasan yang jelas.

brew doctor hanya menyebutkan apa yang sudah saya ketahui, bahwa tidak ada GCC (4.2.x) yang diinstal.


1 Saya sebelumnya telah mencampur MacPorts, Homebrew dan beberapa instalasi manual dan berakhir dengan neraka pemeliharaan dan versi. Saya tidak ingin pergi ke sana lagi.

Konrad Rudolph
sumber
Apa hasil dari gcc --version? saya mendapat i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00) dan saya cukup menginstal Xcode dari MAS. Juga apa output dari echo $PATH?
Gio
@ Geo saya mendapat hasil yang sama. $PATH adalah yang biasa (bagaimanapun, ini adalah sistem yang hampir kosong): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin ... tapi saya tidak berpikir ini penting. Rumus yang disediakan oleh homebrew-alt sudah usang dan tidak berfungsi dengan Dentang.
Konrad Rudolph
Mengapa menggunakan Homebrew? MacPorts pandai mengelola beberapa versi kompiler. Dan MacPort bisa melakukannya apa pun yang bisa dilakukan oleh Homebrew.
Jeff Burdges
@JeffBurdges Homebrew lebih baik. Di hampir semua kategori.
Konrad Rudolph
1
Bagaimana? Sejujurnya, saya tidak menyukai Homebrew kebanyakan hanya karena tidak memiliki (a) deskripsi paket dan (b) paket matematika. Secara keseluruhan MacPorts mungkin memiliki enam kali lebih banyak paket dari pada Homebrew, tapi ya itu paket tidak jelas yang hilang. Saya senang dengan MacPorts secara keseluruhan, meskipun jelas saya berharap mereka akan berintegrasi dengan manajer paket bahasa seperti CPAN, CTAN, Caball, dll.
Jeff Burdges

Jawaban:

29

Solusi yang disediakan oleh @Konrad Rudolph tidak sepenuhnya benar lagi karena rumus GCC yang disebutkannya dipindahkan dari homebrew/dupes untuk homebrew/versions. Anda dapat memilih versi GCC mana yang akan diinstal. Misalnya, pada saat penulisan jawaban ini, versi 4.5, 4.7 dan 4.8 tersedia. Anda dapat memeriksa versi apa yang tersedia sini .

Singkatnya, Anda dapat menginstal GCC 4.8 dengan menggunakan

brew tap homebrew/versions
brew install [flags] gcc48

Anda dapat melihat flag instalasi yang tersedia dengan menggunakan

brew options gcc48
yihangho
sumber
Saya mencoba ini dan saya menginstalnya tetapi mati seperti ini: gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
Warren P
@ WarrenP Apakah Anda menginstal dengan? [flags]? Di komputer saya, saya menginstal tanpa flag dan berfungsi dengan baik. Kenapa kau tidak mencoba menelepon gcc-4.8 tanpa file input dan lihat apakah Anda mendapatkan kesalahan fatal? Coba juga ls /usr/local/Cellar/gcc48/4.8.0/bin dan lihat apakah direktori itu mengandung gcc-4.8.
yihangho
Itu memang mengandung gcc-4.8 dan gcc-4.8 --version berjalan tetapi tidak bisa mengeksekusi ke alat sekunder bernama as dan itu mati.
Warren P
Hmm ... Terus terang saya tidak tahu bagaimana menyelesaikan ini. Mungkin kita harus menunggu beberapa pengguna yang lebih berpengalaman ...
yihangho
2
@ nkint Entah itu atau tambahkan alias g++='g++-4.8' di Anda .bashrc.
yihangho
38

Solusi Homebrew

Untuk menjawab pertanyaan saya sendiri, homebrew-versions sekarang sudah terbarui rumus GCC . Itu dapat diinstal menggunakan

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

Dimana [flags] harus mencakup semua bahasa yang diperlukan, mis. ( --enable-cxx --enable-fortran ).

Ini akan menginstal executable dengan suffix, mis. gcc harus diakses sebagai gcc-version untuk menghindari bentrokan. Jika perlu, seseorang dapat membuat symlink yang sesuai untuk menjadikan versi ini sebagai default.

Instalasi manual

kalau tidak , sebuah GCC terbaru (pada saat penulisan) dapat dikompilasi secara manual menggunakan skrip shell berikut:

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

Ini akan menggelar GCC ke jalur /usr/gcc-4.7.0. Sekarang yang perlu Anda lakukan adalah membuat symlink ke executable atau menambahkan bin direktori ke $PATH variabel.

Konrad Rudolph
sumber
1
Mencoba untuk mengkompilasi versi anggur yang berfungsi, saya juga mengalami masalah dengan gcc yang hilang - sayangnya menginstal v4.7 via homebrew memberi saya beberapa kesalahan; jadi saya menggunakan Apple v4.2 brew tap homebrew/dupes diikuti oleh brew install apple-gcc42. Ini membantu saya mendapatkan gcc dan anggur yang berfungsi. Anda juga bisa mendapatkan binari (seperti halnya homebrew) dari sini: r.research.att.com/tools
iolsmit
@ iolsmit Anda pasti harus mencoba menginstal GCC 4.7 lagi dengan Homebrew yang bersih dan terkini. Itu harus bekerja seperti pesona. Jika tidak, silakan ajukan bug ke pengelola Homebrew-dupes.
Konrad Rudolph
3
brew tap homebrew/dupes; brew install gcc --use-llvm. Lihat github.com/Homebrew/homebrew-dupes/issues/20
phs
@KonradRudolph di mana-mana saya mengubah Anda menjawab pertanyaan yang saya tanyakan! Terima kasih :)
Rik Smith-Unna
1
@ Warren Tidak perlu berteriak - tapi terima kasih atas pengingatnya, karena yihang telah memposting jawaban yang lebih baik dan terkini yang sekarang saya terima.
Konrad Rudolph
12

Saya melihat seseorang memasang tautan ke pos lama ini hari ini. Cara terbaik untuk menginstal GCC di homebrew sekarang adalah adil brew install gcc. Jika Anda memiliki Alat Baris Perintah XCode (mereka terpisah dari XCode; Anda dapat menginstalnya dengan xcode-select --install ) diinstal, versi yang dikompilasi akan diinstal (yang sangat cepat).

Tim Smith
sumber
3

Saya juga punya masalah ini. Terlebih lagi adalah bahwa saya perlu menggunakan gfortran, yang tidak datang dengan instalasi standar (ketinggalan jaman) dari Mac llvm-gcc.

Saya telah menemukan Komputasi Kinerja Tinggi membangun gcc agar mutakhir dan bekerja dengan baik pada Lion.

cm2
sumber
Saya mencoba ini. Tidak hanya itu tidak berhasil, tetapi teknik instalasi yang digunakannya cukup berbahaya. Butuh waktu sekitar satu jam untuk dengan hati-hati membatalkan semuanya.
Bob Aman
2
Oh, saya seharusnya mengatakan saya tidak menginstalnya seperti yang dia sarankan. Saya hanya menghapus file dan membuat symlink ke biner yang saya inginkan, memastikan symlink ada di suatu tempat di PATH saya. Biasanya ini dilakukan dengan menambahkan sesuatu "lokal" ke jalur saya, seperti ~ / bin / atau sesuatu.
cm2
Ya, itu akan jauh lebih waras. Prosedur instalasinya benar-benar gila dan aku seharusnya mengasumsikannya daripada membabi buta.
Bob Aman
2

Jika ada yang melihat utas lama ini, sepertinya homebrew / versi, yang digunakan dalam jawaban yang saat ini diterima, telah usang mendukung homebrew / inti . Lari saja brew install <formula>.

Avi
sumber
Bisakah Anda jelaskan hubungannya dengan pertanyaan OP yaitu bagaimana cara menginstal GCC via Homebrew?
fsb
@ fsb Jawaban diperbarui.
Avi
Ini lebih dari komentar pada jawaban yang diterima. Seharusnya bukan jawaban itu sendiri karena tidak menjawab pertanyaan OP. Setelah Anda memiliki cukup reputasi Anda akan dapat menambahkan komentar dan ajukan pertanyaan tindak lanjut. Untuk mendapatkan reputasi, jawab pertanyaan yang jelas dan ringkas .
fsb
Haruskah pertanyaan baru ditanyakan untuk menentukan versi minuman di mana ini berubah? Memperbaiki posting lama ini tampaknya manfaatnya rendah, keterlambatan tinggi.
bmike
Jika saya memiliki poin reputasi yang cukup saya akan mengomentari solusi yang diterima sebagai gantinya. Jangan ragu untuk melakukannya sendiri.
Avi
0

Anda mungkin mencoba ini - https://github.com/kennethreitz/osx-gcc-installer - Saya telah menggunakannya dengan sukses setelah memutakhirkan ke Lion untuk mengkompilasi paket dengan Homebrew dan lainnya (Ruby).

Dari baca saya:

Pemasang OSX GCC Mengunduh dan menginstal penginstal Xcode yang masif merupakan hal yang sangat merepotkan jika Anda hanya menginginkan GCC dan alat terkait.

Osx-gcc-installer memungkinkan Anda untuk menginstal kompiler esensial dari paket biner yang sudah dibuat sebelumnya atau membantu Anda membuat installer Anda sendiri.

Darren Newton
sumber
Ini hanya menginstal versi yang juga diinstal oleh Xcode. Dengan kata lain: ketinggalan jaman, dan bukan benar-benar GCC tetapi LLVM-GCC.
Konrad Rudolph
1
Sudah usang: Ya. Inti dari paket ini adalah utilitas yang dikirimkan Xcode, tetapi tanpa semua komponen besar lainnya yang diperlukan untuk Xcode. Bukan GNU GCC: Salah. /usr/bin/gcc adalah symlink ke llvm gcc, tetapi referensi eksplisit untuk /usr/bin/gcc-4.2 atau pengaturan export CC="gcc-4.2" di file .bash_profile Anda atau yang sesuai meringankan masalah ini. (Lihat juga Stack Overflow ini pertanyaan.)
Jason Salaz
2
Perhatikan bahwa proyek ini telah digantikan oleh Alat Baris Perintah resmi Apple untuk Xcode: kennethreitz.org/essays/xcode-gcc-and-homebrew
Arto Bendiken