Легкий путь
Если вы типичный разработчик, вы можете установить простой способ, используя инструкции на http://gcc.gnu.org/wiki/InstallingGCC или менеджер пакетов вашей системы, например:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
Трудный путь
GCC говорит, что ответ здесь «трудный», потому что он строит все по частям и не использует разделяемые библиотеки.
Инфраструктура GCC
Получите инфраструктуру GCC:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Поместите загрузки во временный каталог (вы можете использовать любой каталог, который хотите).
/opt/downloads
Создайте инфраструктуру во временном каталоге, который отличается от каталога загрузок или его подкаталогов:
/tmp/gcc
Настройте инфраструктуру с помощью статических библиотек следующим образом:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
Флаг --disable-shared может стоить более внимательного изучения в зависимости от ваших потребностей. Я использую --disable-shared, потому что я создаю только статический код и хочу убедиться, что я не создаю общий код. Мне нужно легко перемещать получившийся GCC по моим дискам, поэтому мне нужен весь статический код, и мне не нужен общий код. Если вы предпочитаете общий код, опустите флаг --disable-shared.
Версии
Когда вы запускаете любую из команд в этом ответе, обязательно обновите команды, чтобы использовать текущий номер версии GCC, который соответствует вашим потребностям. Команды в этом ответе предназначены для GCC 4.6.2.
Обратите внимание, что в документации GCC говорится: «Хотя любая достаточно новая версия необходимых инструментов обычно работает, требования к библиотекам, как правило, строже. В некоторых случаях могут работать более новые версии, но безопаснее использовать именно те версии, которые задокументированы».
GMP
GMP - это арифметическая библиотека множественной точности GNU.
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 - это библиотека округления чисел с плавающей запятой с множественной точностью GNU. Это зависит от 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
MPC
MPC - это библиотека языка C. Многоступенчатая точность GNU. Это зависит от GMP и 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 расшифровывается как Executable and Linkable Format. Эта библиотека обеспечивает поддержку независимого от архитектуры размера и порядка байтов.
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 - это коллекция компиляторов GNU. Это зависит от GMP, MPFR, MPC и 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
Создайте gcc во временном каталоге в той же точке монтирования. (Создание его в / tmp вызовет проблемы с хостом кросс-компиляции)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
Команда configure и ее флаги должны находиться в одной командной строке (в этом сообщении они показаны в отдельных строках только из-за ширины веб-страницы).
Примечание. Мы используем полный путь для настройки и не устанавливаем переменные среды пути к библиотеке. Мы решили отключить загрузку и отключение общих библиотек, потому что они нам не нужны (типичные пользователи могут захотеть и того, и другого), и использовать потоки posix и флаги, которые являются значениями по умолчанию, потому что они нам нужны (типичные пользователи могут захотеть использовать другие потоки или пропустить флаги по умолчанию). YMMV и читайте о флагах здесь
/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
Эта страница отлично подходит для информации об установке GCC, о том, как его собрать, о различных флагах и многом другом:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
Обновления
Библиотеки ppl можно использовать для оптимизации памяти: см. Bugseng.com/products/ppl/Download (спасибо Полу в комментариях)
Вы можете запустить ./contrib/download_prerequisites из исходного каталога gcc. (Спасибо N7P на Reddit)