Легкий путь
Если вы типичный разработчик, вы можете установить простой способ, используя инструкции по адресу 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 Multi-Precision.
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 - это библиотека Си с высокой точностью 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 обозначает Исполняемый и Связываемый формат. Эта библиотека обеспечивает независимый от архитектуры размер и поддержку порядка байтов.
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
1054 * НКУ *
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)