Jak korzystać z najnowszej wersji GCC na Ubuntu?


132

Chcę skompilować mój program z najnowszą wersją gcc.

Ubuntu 14.04 pochodzi z gcc 4.8.2, jednak nie 4.9.0 dostępny zresztą, widzę, że jest on dostępny w postaci pakietu: gcc-4.9. Próbowałem go zainstalować

sudo apt-get install gcc-4.9

ale mówi

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'gcc-4.9-base' for regex 'gcc-4.9'
gcc-4.9-base is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Wygląda na to, że jest już zainstalowany, ale nie jako domyślny? Jak mogę go wykorzystać do zbudowania programu?


Jeśli chcesz zainstalować gcc-4.8, musisz użyć sudo apt-get install gcc-4.8. gcc-4.9, gcc-4.8, gcc-4.7, gcc-4.6Wszystkie są w Ubuntu głównego repo .

1
@Dumindu Ale jak mam używać gcc-4.9konkretnie?
Nickolai Leschov

Odinstaluj inne i zainstaluj 4.9.

2
@Dumindu Poczekaj, czy właśnie powiedziałeś mi, żebym zrobił to, co właśnie zrobiłem? To nie działa.
Nickolai Leschov

przełącz się na użytkownika root: sudo su -goto /usr/binnastępnie uruchom ls -l gcc*i opublikuj swoje wyniki. wtedy opublikuję twoją odpowiedź.
αғsнιη

Odpowiedzi:


196

Najlepszym sposobem prawidłowej instalacji gcc-4.9 i ustawienia go jako domyślnej wersji gcc jest:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

--slave, Ze g++spowoduje g++być włączony wraz z gcc, do tej samej wersji. Ale w tym momencie gcc-4.9 będzie twoją jedyną wersją skonfigurowaną w update-alternatives, więc dodaj 4.8 do update-alternatives, więc tak naprawdę istnieje alternatywa, używając:

sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

Następnie możesz sprawdzić, który jest ustawiony, i zmieniać w tę i z powrotem, używając:

sudo update-alternatives --config gcc

UWAGA: Możesz pominąć instalację repozytorium PPA i po prostu użyć, /usr/bin/gcc-4.9-baseale wolę używać świeżo zaktualizowanych łańcuchów narzędzi.


Dla 5.X GCC lub 6, w opakowaniach (i odpowiednio, polecenia) są po prostu nazywa gcc-5, gcc-6itp Jest to spowodowane zmianą schematu wersji GCC , gdzie 5,1 jest pierwszym GCC 5 wydanie i przyszłych wersjach 5.x są do naprawy błędów .


Dzięki za edycję @muru ... jak powiedziałem poniżej, byłem przez około 3 dni bardzo zmęczony, a aktualizacja - alternatywy wymaga sudo i myślę, że zapomniałem (-) przed niewolnikiem. :) Więc dziękuję.
SudoSURoot

Spróbujsudo apt-get -f install
SudoSURoot,

4
To działa idealnie. Ponadto, zastąpienie 5w przez 4.9uzyskać GCC 5 działa na Ubuntu. (Mój zespół programistów działa teraz zarówno 4,9, jak i 5 obok siebie zgodnie z Twoją metodą.) Dziękuję i daje +1!
CodeMouse92,

2
@hwat Na razie powinno działać gcc-6.
edwinksl

1
Pomogło mi to kilka razy, ale zawsze zapominam - zastosuj to samo rozwiązanie do innych narzędzi w kolekcji kompilatorów GNU, których możesz użyć! Na przykład GCOV będzie narzekać na niedopasowanie wersji, jeśli tego nie zrobisz, prawdopodobnie produkując nieprawidłowe dane.
Toby

23

Użyj PPA kompilacji testowej Toolchain :

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9

Nie sądzę, aby GCC 4.9 był jeszcze w pełni dostępny dla Ubuntu 14.04. Pakiet podstawowy ( gcc-4.9-base ) i kompilator GCC Go 4.9 ( gccgo-4.9 ) są dostępne, ale inne nakładki nie. Nie wiem dlaczego.


1
@SudoSURoot może, ale nie musi być ustawiony jako domyślny, to nie jest mój problem (istnieją inne posty zajmujące się tym). Jednak to, że nakładki C i C ++ GCC 4.9 mogą być instalowane 14.04 wyłącznie z oficjalnych repozytoriów, jest oczywiście fałszywe, ponieważ gcc-4.9-basepakiet nie zawiera i nie będzie zawierał binarnego nakładki.
muru

Masz rację co do pakietu podstawowego. Jak zobaczysz w mojej odpowiedzi, skorzystałem z PPA. Najpierw zamieściłem komentarz, a następnie odpowiedziałem na pytanie, jak podano, z pytania ... Ponieważ samo dodanie PPA i instalacja 4.9 nie włącza go, co jest potrzebne do „użycia gcc 4.9”. Powinienem usunąć komentarz po tym, jak odpowiedziałem na pytanie. Przepraszam. Moja odpowiedź brzmi: na czym należy się skupić. Doszedłem do wniosków ... i szybko skomentowałem. Właściwie jestem całkiem nowy w korzystaniu z 14.04, ponieważ mam serwer dedykowany. Muszę się upewnić, że nie oddałem głosu i naprawię to, jeśli to zrobię.
SudoSURoot

@SudoSURoot w porządku. Mimo to, chyba że OP ma problem z dzwonieniem gcc-4.9lub g++-4.9zamiast gcclub g++, będę się trzymał, aby nie aktualizować alternatyw.
muru

Całkowicie rozumiem. Buduję jednak systemy Android, które używają dużo $ (który gcc) i $ (który g ++) itp. Więc zawsze muszę mieć ustawione domyślne ustawienia na wersję, której chcę używać. Część mojego kodu jądra nie skompilowałaby się z hostem gcc-4.8, więc musiałem zaktualizować. Właśnie powtórzyłem, co dla mnie zadziałało. Dziękuję, że mi przypomniałeś ... Jak powiedziałem w mojej edycji, od ostatniego komentarza mogłem głosować przedwcześnie, jeśli tak, naprawię to. Byłem gotowy przez 2 lub 3 dni pracując na moim źródle jądra, kiedy je opublikowałem. Każdy ma swoje sposoby ... Właśnie znalazłem dokładniejszą moją odpowiedź, tym mniej pytań
SudoSURoot

Najnowszy pakiet to bankomat gcc-7
Elder Geek

5

Ubuntu 16.04 i nowsze

Możesz już zainstalować gcc 7.0 w Ubuntu 18.04 z domyślnych repozytoriów. Aby zainstalować gcc-7 w Ubuntu 17.10, 18.04 i 18.10, otwórz terminal i wpisz:

sudo apt install gcc-7 

Aby zainstalować gcc-8 w Ubuntu 18.04 i nowszych, otwórz terminal i wpisz:

sudo apt install gcc-8

Aby zainstalować gcc-9 w Ubuntu 19.04 i nowszych, otwórz terminal i wpisz:

sudo apt install gcc-9

Możesz zainstalować gcc-7 w Ubuntu 16.04 z ppa: jonathonf / gcc-7.1.

sudo add-apt-repository ppa:jonathonf/gcc-7.1  
sudo apt update  
sudo apt install gcc-7  

Możesz zainstalować gcc-8 w Ubuntu 16.04 z ppa: jonathonf / gcc-8.0.

sudo add-apt-repository ppa:jonathonf/gcc-8.0  
sudo apt update  
sudo apt install gcc-8 

3

Aby wywołać gcc 4.9, użyj go gcc-4.9w wierszu polecenia.

Wszystkie zainstalowane wersje gcc można wywoływać osobno, dodając łącznik i numer wersji na końcu gcc. W twoim przypadku gcc-4.8i gcc-4.9powinien być dostępny. W terminalu wpisz gcc-dwukrotnie (zwróć uwagę na łącznik) i klawisz „push”, aby sprawdzić, czy są zainstalowane jakieś inne wersje.

Zauważ, że domyślny gcc to prawdopodobnie wciąż 4,8. (Użyj, gcc -vaby to zweryfikować.) Niestety zmiana domyślnej wartości nie jest trywialna, jeśli zainstalowałeś gcc-4.9 z domyślnego repozytorium, ponieważ nie dodałem wpisu alternatywy aktualizacji. Jeśli chcesz zmienić domyślną, zobacz odpowiedzi na to pytanie .


Jak zrobić projekt w oparciu o makefile i ewentualnie inną kompilację infrastruktury kompilacji gcc-4.9zamiast gcc?
Nickolai Leschov

1
Najlepszym sposobem, aby upewnić się, że gcc-4.9 jest używany w różnych systemach kompilacji, jest zmiana domyślnego gcc. Kliknij link podany w mojej odpowiedzi, aby dowiedzieć się, jak to zrobić. Alternatywnie możesz utworzyć dowiązanie symboliczne, choć odradzam to, chyba że w ostateczności, ponieważ menedżer pakietów może narzekać podczas aktualizacji gcc. Jeśli upierasz: sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc. Aby przywrócić domyślne ustawienia gcc-4.8, po prostu zamień gcc-4.9 na gcc-4.8. Być może będziesz musiał to zrobić z g ++ i innymi kompilatorami GNU.
holocronweaver

GCC 4.9 nie jest dostępny w Ubuntu 14.04 (z wyjątkiem kompilatora GCC Go ), więc chociaż ta odpowiedź prawdopodobnie będzie działać w Ubuntu 14.10, to nie pomaga teraz. :-)
Søren Løvborg

W rzeczywistości jest on dostępny w Ubuntu 14.04, choć mógł być pomyłką: packages.ubuntu.com/trusty/gcc-4.9-base . Używam go od kwietnia.
holocronweaver

0

OK, zróbmy to:

GCC   9 8 7 6 5 4
19.04 M D M M
18.10   D M M M
18.04 P M D M M
16.04 P P P P D M

Wszystkie pytania:

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.