Ответ 1
Это должно поддерживаться в порядке, так как оно обычно используется для создания кросс-компиляторов.
На самом деле, я только что сделал это с помощью gcc 4.6.0 и binutils 2.21 (с gmp, mpc и mpfr в соответствующих версиях), и следующее, казалось, отлично работало:
- Получите все архивы материалов, которые собираетесь собирать (gcc-4.6.0.tar.bz2, binutils-2.21.tar.bz2 и т.д.) в новый каталог.
src
-
Уничтожьте их все в этом каталоге, поэтому вы получите
gcc-4.6.0/
binutils-2.21/
gmp-5.0.2/
и больше сидите рядом друг с другомtar jxvf gcc-4.6.0.tar.bz2 ... (unpack others here, watch file lists scroll past)
-
cd gcc-4.6.0
и символизировать каталоги gmp, mpc и mpfr без их номеров версий в ссылках, например:ln -s ../gmp-5.0.2 gmp
-
Теперь символизируем все из каталога binutils, которого нет в каталоге gcc, поэтому все, что уже существует, будет иметь приоритет, но инструменты binutils будут видны для сборки:
for file in ../binutils-2.21/* ; do ln -s "${file}" ; done
-
Измените каталог и создайте каталог сборки для создания всего этого отдельно для источников (это всегда было рекомендуемым методом, и он, как правило, более надежен, чем создание внутри исходного каталога):
cd .. ; mkdir build
-
На этом этапе у вас должен быть набор каталогов и ссылок, которые выглядят примерно так:
binutils-2.21/ build/ gcc-4.6.0/ gmp -> ../gmp-5.0.2 mpc -> ../mpc-0.9 mpfr -> ../mpfr-3.0.1 bfd -> ../binutils-2.21/bfd binutils -> ../binutils-2.21/binutils gas -> ../binutils-2.21/gas ... (lots more symlinks for binutils here, plus existing gcc stuff) gmp-5.0.2/ mpc-0.9/ mpfr-3.0.1/
-
Настройте всю партию из этого каталога, с любыми параметрами, которые необходимо передать для настройки:
../gcc-4.6.0/configure --prefix=/foo/bar --enable-languages=c,c++,ada
-
Построить, подождать, установить (вы, вероятно, захотите использовать
make -j4
или так здесь, чтобы получить некоторые сборки параллельно, поскольку это займет некоторое время):make -j4 ; make install
Добавьте место назначения в свой путь, если он еще не был (и, возможно, каталог lib в LD_LIBRARY_PATH, если он находится за пределами указанных в /etc/ld.so.conf
, как указано в сообщениях об установке библиотек во время шага make install
) и все должно быть запущено с этой новой версией.
Возможно, стоит проверить, что вы используете эту установленную версию после того, как вы открыли новую оболочку, с помощью:
`which gcc`
и
`which as`
.. а также, что версия такая, как вы ожидаете:
`gcc --version`
и
`as --version`
.., а также (конечно) тестирование того, что установленная версия прекрасно работает с исполняемыми файлами с некоторыми простыми примерами, прежде чем вы отпустите его на базе кода:)
Изменить: приведенные ниже комментарии содержат несколько наборов версий, которые, как известно, работают вместе. Не все комбинации будут работать, поэтому вам, возможно, придется пройти пробную и пробную версию для разных комбинаций, упомянутых выше!