Jak zainstalować gcc 5.3 z yum na CentOS 7.2?


94

Używam CentOS 7.2

Kiedy używam yum groupinstall "Development Tools", wersja gcc to 4.8.5, na przykład:

wprowadź opis obrazu tutaj

Chciałbym zainstalować gcc 5.3

Jak do tego podejść yum?



@MohammadShahadatHossain Czy yumgdziekolwiek jest zasób?
słońce

Nie jestem pewien, ale w tym przypadku możesz użyć zasobów RPM z tego miejsca. rpmfind.net/linux/rpm2html/search.php?query=gcc
Mohammad Shahadat Hossain

devtoolset udostępnia teraz 5.3.1 - zobacz moją odpowiedź poniżej na polecenia włączania i instalowania go za pomocą yum.
tesch1

Odpowiedzi:


184

Aktualizacja:
Często ludzie chcą najnowszej wersji gcc, a devtoolset jest aktualizowany, więc może chcesz devtoolset-N, gdzie N = {4,5,6,7 ...}, sprawdź yum dla najnowszy dostępny w Twoim systemie). Zaktualizowano poniższe cmds dla N = 7.

Przykładem jest pakiet dla gcc-7.2.1 dla devtoolset-7. Najpierw musisz włączyć kolekcje oprogramowania , a następnie jest dostępne w devtoolset-7:

sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
which gcc
gcc --version

2
wersja gcc w devtoolset została w międzyczasie
podniesiona

4
Nie tylko to, ale możesz zainstalować devtoolset-6, aby uzyskać 6.2.1
Rahly

5
zmiana dowiązania symbolicznego nie jest najlepszą rzeczą do zrobienia, ponieważ prawdopodobnie jest on własnością / jest zarządzany przez inny pakiet, który może zostać zaktualizowany. Lepiej aktywować go za pomocą swojego loginu lub w ogólnosystemowym skrypcie logowania z scl enable devtoolset-6 bashlub . /opt/rh/devtoolset-6/bin/enable zaktualizowanym linkiem do dokumentacji narzędzi programowych
tesch1

1
Uruchomienie yum install devtoolset-4-binutilsmoże być również pomocne w uzyskaniu pełnego zestawu narzędzi GCC.
scrutari

5
Kiedyś source scl_source enable devtoolset-4przełączałem mój obecny gcc na ten zainstalowany przezdevtoolset-4
WF

75

Aktualizacja: instalowanie najnowszej wersji gcc 9: ( gcc 9.3.0 ) - wydana 12 marca 2020 r . :

samą metodę można zastosować do gcc 10 ( gcc 10.1.0 ) - wydanego 7 maja 2020 r

Pobierz plik: gcc-9.3.0.tar.gz lub gcc-10.1.0.tar.gz

Skompiluj i zainstaluj:

//required libraries: (some may already have been installed)
dnf install libmpc-devel mpfr-devel gmp-devel

//if dnf install libmpc-devel is not working try:
dnf --enablerepo=PowerTools install libmpc-devel

//install zlib
dnf install zlib-devel*

./configure --with-system-zlib --disable-multilib --enable-languages=c,c++

make -j 8 <== this may take around an hour or more to finish
              (depending on your cpu speed)

make install

Testowane pod CentOS 7.8.2003 dla gcc 9.3 i gcc 10.1

Przetestowano pod CentOS 8.1.1911 dla gcc 10.1 (kompilacja może zająć więcej czasu)

Wyniki: gcc / g ++ 9.3.0 / 10.1.0

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

Instalowanie gcc 7.4 (gcc 7.4.0) - wydany 6 grudnia 2018 r . :

Pobierz plik: https://ftp.gnu.org/gnu/gcc/gcc-7.4.0/gcc-7.4.0.tar.gz

Skompiluj i zainstaluj:

//required libraries:
yum install libmpc-devel mpfr-devel gmp-devel

./configure --with-system-zlib --disable-multilib --enable-languages=c,c++

make -j 8 <== this may take around 50 minutes or less to finish with 8 threads
              (depending on your cpu speed)


make install

Wynik:

wprowadź opis obrazu tutaj

Uwagi:

1. Ta odpowiedź Stack Overflow pomoże zobaczyć, jak zweryfikować pobrany plik źródłowy.

2. Użyj opcji, --prefixaby zainstalować gcc w innym katalogu niż domyślny. Katalog instalacyjny najwyższego poziomu domyślnie to / usr / local. Przeczytaj o opcjach instalacji gcc


Po co pobierać z ftp.mirrorservice.org zamiast ftp.gnu.org? Powinieneś także pobrać i zweryfikować odpowiedni .sigplik (podpis pgp).
Keith Thompson

Konfiguracja, jak pokazano bez --prefix, zostanie zainstalowana w / usr / local /, która może, ale nie
musi,

1
make -j $(nproc)
Chepe Questn

2
Kompilacja zajęła mi ponad 4 godziny i ponad 6 GB miejsca na dysku twardym.
iDevFS,

Jak sugerował tim18, czy można bezpiecznie biegać make && make installbez --prefix? Jeśli to zrobić, wszystko jest zainstalowane na /usr/nie nawet /usr/localsprawdzić config.log:Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info ...
Celdor

7

Możesz użyć repozytorium centos-sclo-rh-testing, aby zainstalować GCC v7 bez konieczności kompilowania go na zawsze, a także domyślnie włączyć V7 i przełączać się między różnymi wersjami w razie potrzeby.

sudo yum install -y yum-utils centos-release-scl;
sudo yum -y --enablerepo=centos-sclo-rh-testing install devtoolset-7-gcc;
echo "source /opt/rh/devtoolset-7/enable" | sudo tee -a /etc/profile;
source /opt/rh/devtoolset-7/enable;
gcc --version;

Chociaż ten kod może odpowiedzieć na pytanie, lepiej jest wyjaśnić, jak rozwiązać problem i podać kod jako przykład lub odniesienie. Odpowiedzi zawierające tylko kod mogą być mylące i pozbawione kontekstu.
Robert Columbia

Niestety to rozwiązanie nie aktualizuje /usr/lib64/libstdc++.sopliku tak, aby miał nowsze symbole.
łuskowaty

6

Najlepszym podejściem do korzystania z yum i aktualizacji devtoolset jest wykorzystanie repozytorium CentOS SCLo RH Testing.

yum install centos-release-scl-rh
yum --enablerepo=centos-sclo-rh-testing install devtoolset-7-gcc devtoolset-7-gcc-c++

Dostępnych jest również wiele dodatkowych pakietów, aby zobaczyć je wszystkie

yum --enablerepo=centos-sclo-rh-testing list devtoolset-7*

Możesz użyć tej metody, aby zainstalować dowolną wersję narzędzia deweloperskiego, po prostu zamień 7 na żądaną wersję. devtoolset-6-gcc, devtoolset-5-gcc itp.


-11

Polecenie do zainstalowania GCC i narzędzi programistycznych na serwerze CentOS / RHEL 7

Wpisz następujące polecenie yum jako użytkownik root:

yum group install „Narzędzia programistyczne”

LUB

sudo yum group zainstaluj „Narzędzia programistyczne”

Jeśli powyższe polecenie nie powiodło się, spróbuj:

yum groupinstall „Narzędzia programistyczne”

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.