Łatwa droga
Jeśli jesteś typowym programistą, możesz zainstalować w łatwy sposób, korzystając z instrukcji podanych na stronie http://gcc.gnu.org/wiki/InstallingGCC lub menedżera pakietów systemowych, takich jak:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
Trudna droga
GCC mówi, że odpowiedź jest tutaj „trudna”, ponieważ buduje wszystko kawałek po kawałku i nie korzysta z bibliotek współdzielonych.
Infrastruktura GCC
Zdobądź infrastrukturę GCC:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Umieść pliki do pobrania w katalogu tymczasowym (możesz użyć dowolnego katalogu).
/opt/downloads
Zbuduj infrastrukturę w katalogu tymczasowym, który różni się od katalogu pobierania lub jego podkatalogów:
/tmp/gcc
Skonfiguruj infrastrukturę za pomocą bibliotek statycznych, takich jak ta:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
Flaga --disable-shared może być warta bliższego przyjrzenia się w zależności od potrzeb. Używam --disable-shared, ponieważ tworzę tylko kod statyczny i chcę się upewnić, że nie buduję żadnego udostępnionego kodu. Moją potrzebą jest łatwe przenoszenie wynikowego GCC na moje dyski, więc chcę cały kod statyczny i nie chcę żadnego wspólnego kodu. Jeśli wolisz udostępniony kod, pomiń flagę --disable-shared.
Wersje
Po uruchomieniu któregokolwiek z poleceń w tej odpowiedzi pamiętaj, aby zaktualizować polecenia, aby używały bieżącego numeru wersji GCC, który odpowiada Twoim potrzebom. Polecenia w tej odpowiedzi dotyczą GCC 4.6.2.
Zwróć uwagę, że dokumentacja GCC mówi: „Chociaż każda wystarczająco nowa wersja wymaganych narzędzi zwykle działa, wymagania dotyczące bibliotek są generalnie surowsze. Nowsze wersje mogą działać w niektórych przypadkach, ale bezpieczniej jest używać dokładnie udokumentowanych wersji”.
GMP
GMP to biblioteka arytmetyczna GNU Multiple Precision Arithmetic Library.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
bunzip2 gmp-4.3.2.tar.bz2
tar xvf gmp-4.3.2.tar
cd gmp-4.3.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
MPFR
MPFR to biblioteka GNU do zaokrąglania liczb zmiennoprzecinkowych o wielokrotnej precyzji. To zależy od GMP.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
bunzip2 mpfr-2.4.2.tar.bz2
tar xvf mpfr-2.4.2.tar
cd mpfr-2.4.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc
make && make check && make install
RPP
MPC to biblioteka GNU Multiple-Precision C. To zależy od GMP i MPFR.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
tar zxvf mpc-0.8.1.tar.gz
cd mpc-0.8.1
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc --with-mpfr=/tmp/gcc
make && make check && make install
ELF
ELF oznacza format wykonywalny i możliwy do połączenia. Ta biblioteka zapewnia rozmiar i obsługę endianów niezależne od architektury.
wget http://www.mr511.de/software/libelf-0.8.13.tar.gz
tar zxvf libelf-0.8.13.tar.gz
cd libelf-0.8.13
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
GCC
GCC to kolekcja kompilatorów GNU. To zależy od GMP, MPFR, MPC i ELF.
wget http://www.netgull.com/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.gz
tar zxvf gcc-4.6.2.tar.gz
Zbuduj gcc w katalogu zapasowym w tym samym punkcie montowania. (Zbudowanie go w / tmp spowodowałoby problemy z kompilacją krzyżową hosta)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
Polecenie configure i jego flagi muszą znajdować się w jednym wierszu poleceń (ten post pokazuje je w osobnych wierszach tylko ze względu na szerokość strony internetowej).
Uwaga: Używamy pełnej ścieżki do konfigurowania i nie ustawiamy zmiennych środowiskowych ścieżki biblioteki. Decydujemy się na wyłączenie ładowania początkowego i bibliotek współdzielonych, ponieważ ich nie chcemy (typowi użytkownicy mogą chcieć obu), a także używamy wątków posix i flag, które są domyślne, ponieważ ich chcemy (typowi użytkownicy mogą chcieć użyć innych wątków lub pominąć flagi domyślne). YMMV i przeczytaj o flagach tutaj
/opt/downloads/gcc-4.6.2/configure
--disable-shared
--disable-bootstrap
--disable-libstdcxx-pch
--enable-languages=all
--enable-libgomp
--enable-lto
--enable-threads=posix
--enable-tls
--with-gmp=/tmp/gcc
--with-mpfr=/tmp/gcc
--with-mpc=/tmp/gcc
--with-libelf=/tmp/gcc
--with-fpmath=sse
make && make install
Ta strona jest świetna, jeśli chodzi o informacje dotyczące instalacji GCC, jak go zbudować, różne flagi i nie tylko:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
Aktualizacje
Biblioteki ppl mogą być używane do optymalizacji pamięci: zobacz bugseng.com/products/ppl/Download (dziękuję Paul w komentarzach)
Możesz uruchomić ./contrib/download_prerequisites z katalogu źródłowego gcc. (Dzięki N7P na reddit)
--disable-shared
jest zły dla większości ludzi,--disable-bootstrap
może przyspieszyć kompilację, ale może spowodować awarię w zależności od istniejącej wersji gcc,--enable-libgomp
mimo to domyślnie--enable-lto
włączony, domyślnie włączony,--enable-thread-safe
nie jest poprawną opcją,--enable-threads=posix
domyślnie włączony na niektórych platformach, nieważny na innych ,--enable-tls
domyślnie włączone, ... w zasadzie te instrukcje są dość kiepskiebrew install gcc
. Zobacz linuxbrew.shPrzyjęta odpowiedź sprawia, że jest to o wiele bardziej skomplikowane niż to konieczne i nie jest poprawne dla wszystkich wersji. Budowanie GCC
--disable-shared
jest zwykle bardzo złym pomysłem. Zobacz http://gcc.gnu.org/wiki/InstallingGCC, aby uzyskać łatwiejsze podejście.Cały proces nie powinien być trudniejszy niż ten (zastępując 4.6.2 z wersją chcesz zbudować):
(Ale mimo wszystko przeczytaj powyższy link, zawiera on przydatne informacje.)
Najwyraźniej niektórzy ludzie w Ubuntu mają mnóstwo bzdur w swoim środowisku, które kolidują z procesem budowania GCC i muszą najpierw to usunąć:
źródło
unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATH
przed wszystkim innym, jak sugerowano tutaj: stackoverflow.com/questions/12255058/…Pracuję na klastrze. Tylko węzeł główny jest połączony z Internetem. Oprogramowanie na węzłach jest przestarzałe i generalnie nie jest obsługiwane. Nie mam uprawnień roota. Mam dwie możliwości:
Wybrałem drugą i zbudowałem gcc, g ++ i gfortran.
Zbudowałem wszystko
i
make
użyłemPoniżej gcc jest zbudowany z
Najnowszą wersję gcc można pobrać tutaj: ftp://gcc.gnu.org/pub/gcc/releases
Zależności można znaleźć tutaj: ftp://gcc.gnu.org/pub/gcc/infrastructure
Zależności
Otrzymuję zależności z następującym skryptem:
Poniższa funkcja bash jest używana poniżej:
Każde z poniższych poleceń należy wydać w katalogu właśnie pobranej biblioteki.
GMP
MPFR
RPP
ISL
CLOOG
gcc
źródło
LD_LIBRARY_PATH
korzystania z wynikowego GCC.Użyłem tego, o czym wspomniał Jonathan powyżej, z wyjątkiem tego, że musiałem ręcznie pobrać gmp i mpfr i utworzyć miękki link (dystrybucja gcc 4.4.2 prawdopodobnie nie ma "download_prerequisites")
Btw, używając "-with-gmp" i "with-mpfr" z "./configure" dał mi "configure: błąd: nie można obliczyć sufiksu plików obiektowych: nie można kompilować". Dlatego pobrałem srcs z gmp i mpfr, a następnie utworzyłem miękki link do niego z poziomu gcc src top leve dir
źródło
Po próbie zainstalowania zależności GCC, w tym GMP, MPFR i MPC. Napotkałem dodatkowe wymagania dotyczące instalacji, błędy i brakujące pliki; takie jak plik nagłówkowy gmp.h wymagany przez MPFR do zainstalowania. Istnieje wiele problemów, które napotkasz podczas tego procesu. Istnieje jednak łatwiejszy sposób na zbudowanie i zainstalowanie GCC-X.0.0 lub nowszej wersji z automatycznym łączeniem .
OPCJA PIERWSZA.
Aby zaoszczędzić sobie kłopotów związanych z budowaniem za pomocą make, zainstaluj i połącz biblioteki dynamiczne, po prostu:
Pobierz swoją wersję GCC-X.0.0 (najnowszą wersję z: https://gcc.gnu.org/ )
Rozpakuj pliki gcc-X-000.tar.gz do lokalizacji / gdzieś /.
Po rozpakowaniu pliku .tar.gz uruchom skrypt ./contrib/download_prerequisites, który znajduje się w katalogu / somepath / lub katalogu źródłowym.
Ten skrypt pobrać biblioteki obsługi w tym: GMP, MPFR i RPP i będzie utworzyć dowiązania symboliczne dla Ciebie, że będzie BUILD wszystkie zależności gcc automatycznie jako część procesu instalacji gcc.
Nie ma potrzeby budowania i łączenia bibliotek pomocniczych, które zostały pobrane do / somepath / przez wydanie Make, Make Install lub uruchomienie pliku ./configure lub dodanie linków, takich jak --with-gmp = / gmp_path / ... / ..... , --with-mpfr = / mpfr_path / ... / ... ponieważ zostało to zrobione podczas uruchamiania skryptu, który utworzył dowiązania symboliczne .
OPCJA DRUGA.
KONFIGURACJA:
Kwestia:
Uwaga:
- języki umożliwiające włączenie, takie jak c ++ lub c.
--disable-multilib ; wyłączyć multilib w oparciu o system i system operacyjny, pojawi się monit o podanie multilib, aby kontynuować.
Wykonanie Make zajmie dużo czasu. Możesz jednak wydać opcję -j #no_pro. Spowoduje to równoległe uruchomienie programu Make na podstawie liczby procesorów w komputerze PC lub Mac.
Szczegółowe informacje o tym, jak przeprowadzić ten proces, można znaleźć na stronie : https://gcc.gnu.org/wiki/InstallingGCC .
źródło
Postępowałem zgodnie z najczęściej akceptowaną odpowiedzią Joelparkerhendersona. To najlepsza odpowiedź, jaką udało mi się znaleźć w przypadku instalacji w systemie * NIX przez Internet.
Dla przyszłych pokoleń chcę dodać, że jeśli pojawi się błąd typu „błąd instalacji: nie można obliczyć sufiksu plików obiektowych: nie można skompilować”
następnie zaktualizuj swoją ścieżkę LD_LIBRBARY_PATH o / tmp / gcc / lib (zobacz pełną odpowiedź joelparkerhendersona w celu zapoznania się z kontekstem)
/ tmp / gcc / lib zawiera wszystkie wymagane pliki mpfr / mpc / gmp, więc konsolidator czasu wykonywania nie może ich znaleźć, chyba że dodasz je do LD_LIBRARY_PATH. Nie zapomnij także wyeksportować LD_LIBRARY_PATH;). Więcej kontekstu tutaj: https://gcc.gnu.org/wiki/FAQ#configure_suffix
źródło