Jak korzystać z GCC 4.7 zamiast 4.6?


8

Pracuję więc nad projektem i chciałem użyć niektórych funkcji C11 dla C. Aby korzystać z tych funkcji, wymagany jest GCC 4.7, więc poszedłem do synaptic i sprawdziłem 4.7, i znalazłem pakiety gcc-4.7-base, więc zainstalowałem [1].

Więc teraz, gdy gcc-4.7-base jest zainstalowany, spodziewałem się, że będę mógł używać 4.7, ale nie, kiedy to zrobię gcc --version, nadal pokazuje 4.6.3, nawet więcej, gdy próbuję bezpośrednio wywołać 4.7 (via /usr/bin/gcc-4.7), to nie istnieje, chociaż istnieje gcc-4.6plik wykonywalny.

Jak „aktywować” GCC 4.7? Czytam tutaj , robisz szalone rzeczy update-alternatives, ale to nie działa dla mnie, ponieważ gcc-4.7plik wykonywalny nie istnieje na mojej maszynie.

Uwagi: 1. Widziałem także gcc-4.6-base, więc pomyślałem, że go odinstaluję, ale synaptic próbował usunąć każdy zainstalowany pakiet i zainstalować środowisko wykonawcze Java, więc z oczywistych powodów postanowiłem go nie usuwać.

Odpowiedzi:


13

Poniższe działało dla mnie.

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 
sudo update-alternatives --config gcc

Źródło w celach informacyjnych


Nie sądzę, że to odpowiada na pytanie, ponieważ OP powiedział konkretnie, że update-alternativestrasa nie zadziała dla nich, ponieważ nie mieli dostępnego pliku binarnego gcc-4.7. Rzeczywiście, próba wykonania instrukcji update-alternatives: error: alternative path /usr/bin/gcc-4.7 doesn't exist.
zawartych

0

Plik gccbinarny jest w gcc-X.Ypakiecie, nie gcc-X.Y-base. Ta ostatnia jest zależnością jednej gcc-X.Ylub libstdc++.

Zasadniczo powinieneś po prostu zainstalować, gcc-4.7a następnie wywołać go gcc-4.7z pliku makefile lub użyć, install-alternativesaby ustawić go jako domyślny.

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.