Zainstalowałem gcc z Homebrew, teraz jak używać tego gcc zamiast clang?

23

Zainstalowałem gcc z brew install gcc, ale kiedy piszę, gccdomyślne zachowanie jest nadal w użyciu clang. Jak ustawić rzeczy, aby wpisywanie gccw terminalu automatycznie korzystało z gcczainstalowanego przez Homebrew?

Gwiazda neutronowa
źródło
1
Przeszedłem przez ten problem i pracowałem dla mnie to ten link poniżej. Odpowiedź Marka Setchella była najlepsza dla tego problemu. stackoverflow.com/questions/28970935/…
user1896293

Odpowiedzi:

16

Prawdopodobnie będziesz chciał sprawdzić swoją zmienną $ PATH. gccZ homebrew powinny znajdować się w /usr/local/bini które powinny być wcześniej wersji Xcode z gcc/ clang.

Jeśli zmienisz zmienną PATH - pamiętaj, aby wylogować się z powłoki lub ponownie ją odpowiednio zmienić .

Ta odpowiedź ma również eleganckie rozwiązanie wykorzystujące aliasy - więc nie musisz nawet myśleć ani troszczyć się o ścieżkę, jeśli masz więcej niż jedną gcczainstalowaną.

bmike
źródło
Umieszczenie gcc homebrew wcześniej w zmiennej $ PATH niż wersja Xcode jest wystarczające, aby zagwarantować, że odniesienie do gcc homebrew będzie możliwe? Nie byłem pewien, jak będą działać podwójne definicje w $ PATH.
NeutronStar
2
Ścieżki zależą od kolejności. Umieszczenie / usr / local przed / usr to standardowy sposób na zastąpienie domyślnej aplikacji. Widziałem, jak ludzie stawiają przed tym ~ / bin.
Andrew Lazarus
2
Homebrew nie stawia gccsię /usr/local/bin. Ma to na celu zapewnienie zgodności, ponieważ wszystko byłoby wtedy używane gcczamiast clangkompilatora systemowego (który jest również aliasowany jako gcc). To, co robi, to umieszczenie linku do wersji w pliku, /usr/local/binnp gcc-8.
Jason
1

Jeśli which gccdaje

> which gcc
/usr/bin/gcc

Masz dwie opcje:

  1. Utwórz alias .

  2. Utwórz nowe gccdowiązanie symboliczne pod /usr/local/bin/. Homebrew łączy własne gcc /usr/local/bin/gcc-<version>dla kompatybilności. Tak robię

    ln -sf /usr/local/bin/gcc-4.9 / usr / local / bin / gcc

skieruje do /usr/local/bin/gccdowiązania do gcc-4.9zainstalowanej przez Homebrew które powinny przesłonić gccze /usr/binjeśli określa PATH /usr/local/binprzed /usr/bin.

Dmitrij Spikhalskiy
źródło