2011-12-02 13 views
39

Zainstalowałem gcc 4.6. z Macports (dla obsługi C++ 0x). Ale kiedy sprawdzam "gcc --version", pokazuje starszą wersję. Jak korzystać z nowszych gcc zainstalowanych przez macports?Jak korzystać z gcc zainstalowanego w Macportach?

+0

możliwy duplikat [Aktualizuj GCC na OSX] (http://stackoverflow.com/questions/837992/update-gcc-on-osx) – birryree

+0

Zobacz także [Korzystanie z właściwego kompilatora] (https: //trac.macports .org/wiki/UsingTheRightCompiler) na wiki MacPorts. – jww

Odpowiedz

7

Pamiętam, że to coś w rodzaju g++-mp-4.6. Uważam, że wystarczy ustawić do tego zmienną środowiskową CXX.

+2

który działał. czy istnieje sposób, aby go używać domyślnie, tak że nie muszę zmieniać wszystkich plików make. – Nemo

+1

Przykleić do '.bashrc'? –

+4

Dlaczego ta odpowiedź jest najlepsza, a odpowiedź Raima jest poprawna? –

2

Tylko upewnij się, że ścieżka Macports jest pierwsza w twoim $PATH. Lub użyj gcc-mp-4.6 lub coś w tym stylu.

+0

Lub usunąć stary: P – jli

+3

@jli, ten z '/ usr/bin'? Nie brzmi jak dobry pomysł :) –

+0

@ MichaelKrelin-hacker nadal musisz ustawić aktywny gcc, jak opisano powyżej. – Chris

92

Możesz kontrolować dowiązanie symboliczne w /opt/local/bin/gcc, używając port select. Możesz zobaczyć dostępną wersję, używając port select --list gcc. Wszystko, co jest wymienione z prefiksem MP-as, odnosi się do własnego portu MacPorts, gcc42 i llvm-gcc42 odnoszą się do kompilatorów dostarczanych z Xcode przez Apple.

Przykład z mojego systemu:

$ port select --list gcc 
Available versions for gcc: 
    gcc42 
    llvm-gcc42 
    mp-gcc45 
    none (active) 
$ sudo port select --set gcc mp-gcc45 
Password: 
Selecting 'mp-gcc45' for 'gcc' succeeded. 'mp-gcc45' is now active. 

Po tym, albo otwarte nowe okno terminalu lub problem hash -r aby bash rozpoznać zmianę.

+0

Zrobiłem to, i kiedy wpisuję 'port select --list gcc', mówi, że mp-gcc47 jest aktywny. Jednakże, kiedy robię "gcc --version", nadal jest napisane, że używa wersji 4.2 ... Próbowałem otworzyć nowy terminal i wpisać 'hash -r'. Każdy pomysł, dlaczego? – FrancesKR

+0

Sprawdź swoją ścieżkę PATH, może jest jakiś inny gcc (lub dowiązanie symboliczne) przed/opt/local/bin. Może to być również jakiś alias lub funkcja w twojej powłoce. Spróbuj "type -a gcc", aby zobaczyć, co bash używa do wyszukiwania. – raimue

+0

Kiedy robię "type -a gcc", otrzymuję dwie linie: "gcc to/usr/bin/gcc gcc to/opt/local/bin/gcc". Kiedy drukujesz swoją ścieżkę PATH, otrzymuję ".:/Opt/local/var/macports:/usr/local/bin:/sw/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/hallamsoft:/opt/local/bin:/usr/local/git/bin:/usr/texbin:/usr/X11/bin ". Przepraszam, nie jestem do końca pewien, co to oznacza, ale położyłem Macports pierwszy na mojej drodze. – FrancesKR