Легкий путь
Если вы типичный разработчик, вы можете установить простой способ, используя инструкции на 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)
--disable-shared
является неправильным для большинства людей,--disable-bootstrap
может ускорить сборку, но может привести к сбою в зависимости от существующей версии gcc,--enable-libgomp
в любом случае--enable-lto
включена по умолчанию, включена по умолчанию,--enable-thread-safe
недопустимая опция,--enable-threads=posix
включена по умолчанию на некоторых платформах, недопустима на других ,--enable-tls
включен по умолчанию ... в основном эти инструкции довольно скудныеbrew install gcc
. См. Linuxbrew.shПринятый ответ делает его намного более сложным, чем необходимо, и не подходит для всех версий. Сборка GCC с помощью
--disable-shared
обычно - очень плохая идея. См. Http://gcc.gnu.org/wiki/InstallingGCC для более простого подхода.Весь процесс должен быть не более сложным , чем это (замена 4.6.2 с версией вы хотите построить):
(Но, пожалуйста, прочтите ссылку выше, она содержит полезную информацию.)
По-видимому, у некоторых людей на Ubuntu в своей среде установлено множество дерьма, которое мешает процессу сборки GCC, и им нужно сначала удалить это:
источник
unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATH
раньше всего, как предлагается здесь: stackoverflow.com/questions/12255058/…Работаю на кластере. Только главный узел подключен к Интернету. Программное обеспечение на узлах устарело и обычно не обслуживается. У меня нет root-доступа. У меня есть два варианта:
Я выбрал второй и построил gcc, g ++ и gfortran.
Я построил все в
и для
make
я использовалНиже gcc построен с
Последнюю версию gcc можно получить отсюда: ftp://gcc.gnu.org/pub/gcc/releases
Зависимости находятся здесь: ftp://gcc.gnu.org/pub/gcc/infrastructure
зависимости
Я получаю зависимости со следующим скриптом:
Ниже используется следующая функция bash:
Каждая из приведенных ниже команд должна запускаться в каталоге только что загруженной библиотеки.
GMP
MPFR
MPC
ISL
CLOOG
НКУ
источник
LD_LIBRARY_PATH
использование полученного GCC.Использовал то, что упомянул выше Джонатан, за исключением того, что мне пришлось вручную загрузить gmp и mpfr и создать программную ссылку (в дистрибутиве gcc 4.4.2, вероятно, нет "download_prerequisites")
Кстати, использование "-with-gmp" и "with-mpfr" с "./configure" дало мне "configure: error: cannot compute суффикс объектных файлов: невозможно скомпилировать". Поэтому я загрузил srcs gmp и mpfr, а затем создал мягкую ссылку на них из каталога gcc src top leve
источник
После попытки установить зависимости GCC, включая GMP, MPFR и MPC. Я столкнулся с дополнительными требованиями к установке, ошибками и отсутствующими файлами; например, файл заголовка gmp.h, необходимый для установки MPFR. Есть ряд проблем, с которыми вы столкнетесь в процессе. Однако есть более простой способ собрать и установить GCC-X.0.0 или более позднюю версию с автоматической привязкой .
ВАРИАНТ ПЕРВЫЙ.
Чтобы не беспокоиться о сборке с помощью make, выполните установку и связывание динамических библиотек, просто:
Загрузите вашу версию GCC-X.0.0 (последнюю версию можно найти по адресу : https://gcc.gnu.org/ )
Извлеките файлы gcc-X-000.tar.gz в папку / somepath /.
После извлечения файла .tar.gz запустите сценарий ./contrib/download_prerequisites, который находится в / somepath / или исходном каталоге.
Этот сценарий будет загружать библиотеки поддержки , включая: GMP, MPFR и MPC и создаст Symlinks для вас, что будет BUILD все зависимости GCC автоматически как часть процесса установки НКИ.
Нет необходимости создавать и связывать библиотеки поддержки, которые были загружены в / somepath /, выполнив команду Make, Make Install или запустив файл ./configure или добавив такие ссылки, как --with-gmp = / gmp_path / ... / ..... , --with-mpfr = / mpfr_path / ... / ... потому что это было сделано, когда вы запускали скрипт, который создавал символические ссылки .
ВАРИАНТ ВТОРОЙ.
КОНФИГУРАЦИЯ:
Выпуск:
NB:
--enable-languages, такие как c ++ или c.
--disable-Multilib ; Отключите Multilib в зависимости от вашей системы и ОС, вам будет предложено продолжить работу с Multilib.
Создание займет много времени. Однако вы можете использовать параметр -j #no_pro. Это будет запускать Make одновременно параллельно в зависимости от количества процессоров на вашем ПК или Mac.
Для получения подробной информации о том, как выполнить этот процесс, вы можете посетить: https://gcc.gnu.org/wiki/InstallingGCC .
источник
Я последовал за наиболее распространенным ответом Джоэлпаркерхендерсона. Это лучший ответ, который я мог найти для установки в системе * NIX через Интернет.
Для потомков хочу добавить, что если вы получите сообщение об ошибке типа «ошибка установки: невозможно вычислить суффикс объектных файлов: невозможно скомпилировать»
затем обновите свой LD_LIBRBARY_PATH с помощью / tmp / gcc / lib (см. полный ответ joelparkerhenderson для контекста)
/ tmp / gcc / lib содержит все необходимые файлы mpfr / mpc / gmp, поэтому файлы и компоновщик времени выполнения не смогут их найти, если вы не добавите их в LD_LIBRARY_PATH. Также не забудьте экспортировать LD_LIBRARY_PATH;). Больше контекста здесь: https://gcc.gnu.org/wiki/FAQ#configure_suffix
источник