Jak zainstalować GCC przez Homebrew?


79

Używam wyłącznie Homebrew (tzn. Nie używam MacPorts ani Fink). Chcę również ograniczyć ręczne instalacje. 1

… Ale jak mogę zainstalować GCC?

Po pierwsze, oczywiście zainstalowałem Xcode, ale obecna wersja nie jest dostarczana z przyzwoitym GCC (potrzebuję co najmniej 4.5, ale wolałbym najnowszą) - w rzeczywistości nie jest wysyłany z odpowiednim GCC na wszystkich (tyle że statki dzyń) i który wydaje się być problemem dla Homebrew ...

Znam listę niestandardowych GCC i kompilatorów krzyżowych, ale w rzeczywistości wszystkie te instalacje wymagają już zainstalowanego GCC - przynajmniej brewnie udaje im się to z błędami linkera w Lionie, które przypisuję Clangowi, i -use-gccnie działa to w sposób oczywisty powody.

brew doctor wspomina tylko to, co już wiem, że nie ma zainstalowanego GCC (4.2.x).


1 Wcześniej miksowałem MacPorts, Homebrew i kilka ręcznych instalacji i skończyłem z piekłem konserwacji i wersjonowania. Nie chcę tam iść ponownie.


Jaka jest wydajność gcc --version? Dostaję i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)i po prostu zainstalowałem Xcode z MAS. Jaka jest wydajność echo $PATH?
— Gio

@Gio Mam taką samą wydajność. $PATHjest zwykle (w końcu jest to prawie pusty system): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin… ale nie sądzę, żeby to miało znaczenie. Formuły dostarczone przez homebrew-alt są po prostu przestarzałe i nie działają z Clangiem.
— Konrad Rudolph

1
Dlaczego warto korzystać z Homebrew? MacPorts dobrze zarządza wieloma wersjami kompilatorów. A MacPorts może zrobić wszystko , co może zrobić Homebrew.
— Jeff Burdges

@JeffBurdges Homebrew jest lepszy. W prawie każdej kategorii.
— Konrad Rudolph,

2
Jak to? Szczerze mówiąc, nie lubię Homebrew głównie dlatego, że brakuje w nim (a) opisów pakietów i (b) pakietów matematycznych. Ogólnie MacPorts ma może sześć razy więcej pakietów niż Homebrew, ale tak, to brakuje tych nieznanych pakietów. Ogólnie jestem zadowolony z MacPorts, choć oczywiście chciałbym, aby zintegrowali się z menedżerami pakietów językowych, takimi jak CPAN, CTAN, Caball itp.
— Jeff Burdges

Odpowiedzi:


30

Rozwiązanie dostarczone przez @Konrad Rudolph nie jest już całkowicie poprawne, ponieważ wzmiankowana przez niego formuła GCC została przeniesiona homebrew/dupesdo homebrew/versions. Możesz wybrać wersję GCC do zainstalowania. Na przykład w momencie pisania tej odpowiedzi dostępne są wersje 4.5, 4.7 i 4.8. Możesz sprawdzić, jakie wersje są dostępne tutaj .

Krótko mówiąc, możesz zainstalować GCC 4.8 za pomocą

brew tap homebrew/versions
brew install [flags] gcc48

Możesz wyświetlić dostępne flagi instalacji, używając

brew options gcc48

Próbowałem tego i mam go zainstalować, ale umiera w ten sposób:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
— Warren P

@WarrenP Czy instalowałeś z jakimś [flags]? Na moich komputerach zainstalowałem bez żadnych flag i działa dobrze. Dlaczego nie spróbować zadzwonić gcc-4.8bez pliku wejściowego i sprawdzić, czy wystąpił błąd krytyczny? Spróbuj także ls /usr/local/Cellar/gcc48/4.8.0/binsprawdzić, czy ten katalog zawiera gcc-4.8.
— yihangho

Zawiera gcc-4.8 i gcc-4.8 --versiondziała, ale nie może wykonać drugiego narzędzia o nazwie, asdlatego umiera.
— Warren P

Hmm ... Szczerze mówiąc nie mam pojęcia, jak to rozwiązać. Może musimy poczekać na bardziej doświadczonego użytkownika ...
— yihangho

2
@nkint Albo to albo dodaj alias g++='g++-4.8'swoje .bashrc.
— yihangho,

38

Rozwiązanie Homebrew

Aby odpowiedzieć na moje pytanie, homebrew-versionsteraz mam dość aktualną formułę GCC . Można go zainstalować za pomocą

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

Gdzie [flags]powinny zawierać wszystkie wymagane języki, np. ( --enable-cxx --enable-fortran).

Spowoduje to zainstalowanie plików wykonywalnych z przyrostkiem, tzn. gccNależy uzyskać do nich dostęp, gcc-versionaby uniknąć kolizji. W razie potrzeby można utworzyć odpowiednie dowiązania symboliczne, aby ustawić tę wersję jako domyślną.

Instalacja ręczna

Alternatywnie , aktualny GCC (w momencie pisania) można skompilować ręcznie przy użyciu następującego skryptu powłoki:

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

To wprowadzi GCC na ścieżkę /usr/gcc-4.7.0. Teraz wszystko, co musisz zrobić, to albo utworzyć dowiązania symboliczne do plików wykonywalnych, albo dodać binkatalog do $PATHzmiennej.


1
Próbując skompilować działającą wersję wina, natknąłem się również na problem z brakującym gcc - niestety instalacja v4.7 przez homebrew dała mi pewne błędy; więc wybrałem Apple v4.2 używając, brew tap homebrew/dupesa następnie brew install apple-gcc42. Pomogło mi to uzyskać działające gcc i wino. Możesz także pobrać pliki binarne (jak robi to homebrew): r.research.att.com/tools
— iolsmit

@iolsmit Zdecydowanie powinieneś spróbować ponownie zainstalować GCC 4.7 z czystym, aktualnym Homebrew. Powinno działać jak urok. Jeśli nie, zgłoś błąd do opiekunów Homebrew-dupes.
— Konrad Rudolph

3
brew tap homebrew/dupes; brew install gcc --use-llvm. Zobacz github.com/Homebrew/homebrew-dupes/issues/20
— PHS

@KonradRudolph, gdziekolwiek się obracam, odpowiadasz na pytania, które zadaję! Dzięki :)
— Rik Smith-Unna

1
@Warren Nie trzeba krzyczeć - ale dzięki za przypomnienie, ponieważ yihang opublikował lepszą, aktualną odpowiedź, którą teraz zaakceptowałem.
— Konrad Rudolph

13

Widziałem dziś, jak ktoś link do tego starego postu. Najlepszym sposobem na zainstalowanie GCC w homebrew jest teraz brew install gcc. Jeśli masz narzędzia wiersza polecenia XCode (są one oddzielne od XCode; możesz je zainstalować przy pomocy xcode-select --install), zainstalowana zostanie wersja wstępnie skompilowana (która jest bardzo szybka).


3

Ja też miałem ten problem. Co więcej, muszę użyć gfortran, który nie jest dostarczany ze standardową (nieaktualną) instalacją llvm-gcc dla Maca.

Odkryłem, że wersje gcc High Performance Computing są aktualne i świetnie działają na Lion.


Próbowałem tego. Nie tylko nie zadziałało, ale technika instalacji, której używa, jest dość niebezpieczna. Zajęło mi około godziny, aby wszystko ostrożnie cofnąć.
— Bob Aman

2
Powinienem był powiedzieć, że nie instaluję go tak, jak sugeruje. Po prostu rozpakowuję plik i tworzę dowiązanie symboliczne do pliku binarnego, którego chcę, upewniając się, że dowiązanie symboliczne jest gdzieś w mojej ŚCIEŻCE. Zazwyczaj robi się to przez dodanie do mojej ścieżki czegoś „lokalnego”, na przykład ~ / bin / lub czegoś innego.
— cm2

Tak, byłoby to znacznie bardziej rozsądne. Jego procedura instalacyjna to wariactwo, a ja powinienem był raczej założyć tyle samo, niż ślepo.
— Bob Aman

3

W przypadku, gdy ktoś patrzy na ten stary wątek, wydaje się, że homebrew / wersje, użyte w obecnie akceptowanej odpowiedzi, są przestarzałe na rzecz homebrew / core . Po prostu biegnij brew install <formula>.


Czy możesz wyjaśnić, jak to ma się do pytania PO, jak zainstalować GCC przez Homebrew?
— fsb

@fsb Odpowiedź została zaktualizowana.
— Avi

To jest bardziej komentarz do zaakceptowanej odpowiedzi. Nie powinna to być sama odpowiedź, ponieważ nie dotyczy pytania PO. Po uzyskaniu wystarczającej reputacji będziesz mógł dodawać komentarze i zadawać pytania uzupełniające. Aby zyskać reputację, odpowiedz na pytania, które są jasne i zwięzłe .
— fsb

Czy należy zadać nowe pytanie, aby określić wersję naparu, w którym to się zmienia? Naprawienie tego starego postu wydaje się mało korzystne, duże opóźnienie.
— bmike

Gdybym miał wystarczającą liczbę punktów reputacji, skomentowałbym zaakceptowane rozwiązanie. Możesz to zrobić samemu.
— Avi

0

Możesz spróbować tego - https://github.com/kennethreitz/osx-gcc-installer - Użyłem go z powodzeniem po aktualizacji do Lion do kompilacji pakietów z Homebrew i innymi (Ruby).

Z przeczytanego mi:

Instalator GCC dla OSX Pobieranie i instalowanie ogromnego instalatora Xcode jest dużym problemem, jeśli chcesz tylko GCC i powiązanych narzędzi.

Instalator osx-gcc-installer pozwala zainstalować niezbędne kompilatory z gotowych pakietów binarnych lub pomaga stworzyć własny instalator.


To tylko instaluje wersje zainstalowane również przez Xcode. Innymi słowy: przestarzały, a właściwie nie GCC, ale LLVM-GCC.
— Konrad Rudolph

1
Nieaktualne: Tak. Chodzi o to, że to narzędzia dostarczane przez Xcode, ale bez wszystkich innych ogromnych komponentów niezbędnych do Xcode. Nie GNU GCC: Źle. /usr/bin/gccjest dowiązaniem symbolicznym do llvm gcc, ale wyraźne odniesienie /usr/bin/gcc-4.2lub ustawienie export CC="gcc-4.2"w twoim pliku .bash_profile lub odpowiednim pliku również łagodzi ten problem. (Zobacz także to pytanie dotyczące przepełnienia stosu .)
— Jason Salaz,

2
Pamiętaj, że ten projekt został zastąpiony przez oficjalne narzędzia wiersza polecenia Apple dla Xcode: kennethreitz.org/essays/xcode-gcc-and-homebrew
— Arto Bendiken
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.