Làm cách nào để cài đặt GCC qua Homebrew?


79

Tôi đang sử dụng Homebrew độc quyền (nghĩa là tôi không và sẽ không sử dụng MacPorts hoặc Fink). Tôi cũng muốn giữ cài đặt thủ công ở mức tối thiểu. 1

Nhưng tôi có thể cài đặt GCC bằng cách nào?

Trước hết, tất nhiên tôi đã cài đặt Xcode nhưng phiên bản hiện tại không được phát hành với GCC cập nhật (tôi cần ít nhất 4,5, nhưng sẽ thích phiên bản mới nhất) - thực tế, nó không xuất xưởng với một GCC phù hợp ở tất cả (nó chỉ xuất xưởng Clang) và đó dường như là một vấn đề đối với Homebrewạn

Tôi biết danh sách GCC tùy chỉnh và trình biên dịch chéo nhưng thực tế tất cả các cài đặt đó đều yêu cầu GCC đã được cài đặt - ít nhất, brewchúng không thành công với các lỗi liên kết trên Lion mà tôi gán cho Clang và -use-gcckhông hoạt động rõ ràng lý do.

brew doctor chỉ đề cập đến những gì tôi đã biết, không có GCC (4.2.x) được cài đặt.


1 Trước đây tôi đã trộn MacPorts, Homebrew và một số cài đặt thủ công và đã kết thúc với một địa ngục bảo trì và phiên bản. Tôi không muốn đến đó một lần nữa.


Đầu ra của gcc --versioncái gì? Tôi nhận được i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)và tôi chỉ cần cài đặt Xcode từ MAS. Ngoài ra những gì đầu ra của echo $PATH?
Gio

@Gio Tôi có cùng một đầu ra. $PATHlà thông thường (rốt cuộc, đây là một hệ thống gần như trống): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/binnhưng tôi không nghĩ rằng vấn đề này. Các công thức được cung cấp bởi homebrew-alt đơn giản là lỗi thời và không hoạt động với Clang.
Konrad Rudolph

1
Tại sao nên sử dụng Homebrew? MacPorts rất tốt trong việc quản lý nhiều phiên bản trình biên dịch. Và MacPorts có thể làm bất cứ điều gì mà Homebrew có thể làm.
Jeff Burdges

@JeffBurdges Homebrew tốt hơn. Trong khá nhiều thể loại.
Konrad Rudolph

2
Làm sao vậy Thành thật mà nói, tôi không thích Homebrew chủ yếu chỉ vì nó thiếu (a) các mô tả gói và (b) các gói toán học. Nhìn chung, MacPorts có thể nhiều gấp sáu lần so với Homebrew, nhưng vâng, đó là các gói tối nghĩa bị thiếu. Tôi hài lòng với MacPorts nói chung, mặc dù rõ ràng tôi muốn họ tích hợp với các nhà quản lý gói ngôn ngữ như CPAN, CTAN, Caball, v.v.
Jeff Burdges

Câu trả lời:


30

Giải pháp được cung cấp bởi @Konrad Rudolph không hoàn toàn chính xác nữa vì công thức GCC mà ông đề cập đã được chuyển từ homebrew/dupessang homebrew/versions. Bạn có thể chọn phiên bản GCC nào để cài đặt. Ví dụ, tại thời điểm viết câu trả lời này, phiên bản 4.5, 4.7 và 4.8 có sẵn. Bạn có thể kiểm tra những phiên bản có sẵn ở đây .

Nói tóm lại, bạn có thể cài đặt GCC 4.8 bằng cách sử dụng

brew tap homebrew/versions
brew install [flags] gcc48

Bạn có thể xem các cờ cài đặt có sẵn bằng cách sử dụng

brew options gcc48

Tôi đã thử cái này và tôi đã cài đặt nó nhưng nó chết như thế này:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
Warren P

@WarrenP Bạn đã cài đặt với bất kỳ [flags]? Trên máy của tôi, tôi đã cài đặt mà không có bất kỳ cờ nào và nó hoạt động tốt. Tại sao bạn không thử gọi gcc-4.8mà không có bất kỳ tập tin đầu vào và xem nếu bạn gặp một lỗi nghiêm trọng? Cũng thử ls /usr/local/Cellar/gcc48/4.8.0/binvà xem thư mục đó có chứa gcc-4.8.
yihangho

Nó chứa gcc-4.8 và gcc-4.8 --versionchạy nhưng nó không thể thực thi được công cụ phụ có tên asvà vì vậy nó chết.
Warren P

Hmm ... Thành thật mà nói tôi không biết làm thế nào để giải quyết điều này. Có lẽ chúng ta phải đợi một số người dùng có kinh nghiệm hơn ...
yihangho

2
@nkint Hoặc là hoặc thêm alias g++='g++-4.8'vào của bạn .bashrc.
yihangho

38

Giải pháp homebrew

Để trả lời câu hỏi của riêng tôi, homebrew-versionsgiờ đây đã có một công thức khá cập nhật của GCC . Nó có thể được cài đặt bằng cách sử dụng

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

Trường hợp [flags]nên bao gồm tất cả các ngôn ngữ cần thiết, ví dụ ( --enable-cxx --enable-fortran).

Điều này sẽ cài đặt các tệp thực thi với hậu tố, tức là gccphải được truy cập gcc-versionđể tránh xung đột. Nếu cần thiết, người ta có thể tạo các liên kết tượng trưng phù hợp để biến phiên bản này thành mặc định.

Hướng dẫn cài đặt

Ngoài ra , một GCC cập nhật (tại thời điểm viết) có thể được biên dịch thủ công bằng cách sử dụng tập lệnh shell sau:

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

Điều này sẽ đưa GCC vào con đường /usr/gcc-4.7.0. Bây giờ tất cả những gì bạn cần làm là tạo liên kết tượng trưng cho các tệp thực thi hoặc thêm binthư mục vào $PATHbiến.


1
Cố gắng biên dịch một phiên bản rượu hoạt động, tôi cũng gặp phải vấn đề về một gcc bị thiếu - không may cài đặt v4.7 qua homebrew đã cho tôi một số lỗi; Vì vậy, tôi đã đi cho Apple v4.2 bằng cách sử dụng brew tap homebrew/dupestheo sau brew install apple-gcc42. Điều này giúp tôi có được một gcc làm việc và rượu vang. Bạn cũng có thể nhận các tệp nhị phân (như homebrew đã làm) từ đây: r.research.att.com/tools
iolsmit

@iolsmit Bạn chắc chắn nên thử cài đặt GCC 4.7 một lần nữa với Homebrew sạch sẽ, cập nhật. Nó nên hoạt động như một lá bùa. Nếu không, vui lòng gửi một lỗi cho các nhà bảo trì Homebrew-dupes.
Konrad Rudolph

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

@KonradRudolph ở mọi nơi Tôi đến lượt bạn đang trả lời các câu hỏi tôi đang hỏi! Cảm ơn :)
Rik Smith-Unna

1
@Warren Không cần phải hét lên - nhưng cảm ơn vì đã nhắc nhở, bởi vì yihang thực sự đã đăng một câu trả lời cập nhật tốt hơn mà tôi đã chấp nhận.
Konrad Rudolph

13

Tôi thấy ai đó liên kết đến bài viết cũ ngày hôm nay. Cách tốt nhất để cài đặt GCC trong homebrew ngay bây giờ là chỉ brew install gcc. Nếu bạn có Công cụ dòng lệnh XCode (chúng tách biệt với XCode; bạn có thể cài đặt chúng xcode-select --install) được cài đặt, một phiên bản được biên dịch trước sẽ được cài đặt (rất nhanh).


3

Tôi cũng có vấn đề này. Thêm nữa là tôi cần sử dụng gfortran, không đi kèm với bản cài đặt chuẩn (lỗi thời) của llvm-gcc của Mac.

Tôi đã tìm thấy các bản dựng gcc tính toán hiệu năng cao được cập nhật và hoạt động tốt trên Lion.


Tôi đã thử điều này. Nó không chỉ không hoạt động, mà kỹ thuật cài đặt mà anh ấy đang sử dụng cũng khá nguy hiểm. Mất khoảng một giờ để cẩn thận hoàn tác mọi thứ.
Bob Aman

2
Ồ, tôi nên nói rằng tôi không cài đặt nó theo cách anh ấy gợi ý. Tôi chỉ gỡ các tệp và tạo một liên kết tượng trưng đến nhị phân mà tôi muốn, đảm bảo rằng liên kết tượng trưng đó nằm ở đâu đó trong ĐƯỜNG của tôi. Thông thường, điều này được thực hiện bằng cách thêm một cái gì đó "cục bộ" vào đường dẫn của tôi, như ~ / bin / hoặc thứ gì đó.
cm2

Vâng, đó sẽ là cách lành mạnh hơn. Thủ tục cài đặt của anh ta là các loại hạt kỳ dị và tôi nên đã giả định nhiều hơn là cho nó đi một cách mù quáng.
Bob Aman

3

Trong trường hợp bất cứ ai nhìn vào chủ đề cũ này, có vẻ như homebrew / phiên bản, được sử dụng trong câu trả lời chấp nhận hiện nay, đã được tán thành ủng hộ homebrew / lõi . Cứ chạy đi brew install <formula>.


Bạn có thể giải thích điều này liên quan đến câu hỏi của OP đó là cách cài đặt GCC qua Homebrew không?
fsb

@fsb Trả lời được cập nhật.
Avi

Đây là nhiều hơn một nhận xét về câu trả lời được chấp nhận. Nó không phải là một câu trả lời vì nó không giải quyết câu hỏi OP. Khi bạn có đủ danh tiếng, bạn sẽ có thể thêm nhận xét và đặt câu hỏi tiếp theo. Để đạt được danh tiếng, trả lời các câu hỏi rõ ràng và súc tích .
fsb

Có nên hỏi một câu hỏi mới để chỉ định phiên bản bia nơi thay đổi này không? Sửa bài cũ này có vẻ lợi ích thấp, độ trễ cao.
bmike

Nếu tôi có đủ điểm danh tiếng, tôi sẽ nhận xét về giải pháp được chấp nhận thay thế. Hãy tự làm điều đó.
Avi

0

Bạn có thể thử điều này - https://github.com/kennethreitz/osx-gcc-installer - Tôi đã sử dụng thành công sau khi nâng cấp lên Lion để biên dịch các gói với Homebrew và những người khác (Ruby).

Từ đọc tôi:

Trình cài đặt OSX GCC Tải xuống và cài đặt trình cài đặt Xcode khổng lồ là một rắc rối lớn nếu bạn chỉ muốn GCC và các công cụ liên quan.

Trình cài đặt osx-gcc cho phép bạn cài đặt các trình biên dịch cần thiết từ các gói nhị phân dựng sẵn hoặc giúp bạn tạo trình cài đặt của riêng mình.


Điều này chỉ cài đặt các phiên bản cũng được cài đặt bởi Xcode. Nói cách khác: lỗi thời và không thực sự là GCC mà là LLVM-GCC.
Konrad Rudolph

1
Đã lỗi thời: Có. Điểm quan trọng của gói là các tiện ích được vận chuyển Xcode, nhưng không có tất cả các thành phần lớn khác cần thiết cho Xcode. Không phải GNU GCC: Sai. /usr/bin/gcclà một liên kết tượng trưng cho llvm gcc, nhưng tham chiếu rõ ràng đến /usr/bin/gcc-4.2hoặc cài đặt export CC="gcc-4.2"trong .bash_profile hoặc tệp phù hợp của bạn cũng giảm thiểu vấn đề. (Xem thêm câu hỏi về Stack Overflow này .)
Jason Salaz

2
Lưu ý rằng dự án này đã được thay thế bởi Công cụ dòng lệnh chính thức của Apple cho Xcode: kennethreitz.org/essays/xcode-gcc-and-homebrew
Arto Bendiken
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.