LINUX.ORG.RU

Сборка GCC (Портирование GNAT под FreeBSD)


0

0

Привожу решение проблемы по портирования gnat из линукса на 64 битную фриБСД. Как уже писал ранее суть трабля в том что под БСД в 63 бита рабочего gnat пока нет прямо там собрать свой неполучиться т. к. для сборки gnat нужен ... gnat!

Итак для портирования выполняются следующие шаги.
1) Выбирается prefix директория куда будет собираться новый промежуточный компилятор, например $HOME/gcc поддиректория bin добавляется в PATH а lib в LD_LIBRARY_PATH
2) собирается нативный для linux компилятор и устанавливается в $HOME/gcc. Пример конфигурации:
../gcc-4_4-branch/configure --prefix=$HOME/gcc --enable-languages=c,ada --enable-checking=release --enable-ssp --enable-__cxa_atexit --enable-libstdcxx-allocator=new --enable-version-specific-runtime-libs --program-suffix=-4.4 --enable-linux-futex --without-system-libunwind --with-arch-32=i586 --with-tune=core2 --build=x86_64-suse-linux
устанавливается ксобраный компилятор, НО РЕЗУЛЬТАТЫ СБОРКИ НЕ ОЧИЩАЮТСЯ!
2) В $HOME/gcc собирается кроссплатформенное окружение в виде binutils (Обязательно собрать с опцией --with-sysroot) и каталогов /lib /usr/lib /usr/include целевой системы
3) Собирается кроссплатформенный компилятор. Пример конфигурации:
../gcc-4_4-branch/configure --prefix=$HOME/gcc --target=x86_64-mybuild-freebsd7 --enable-languages=c,ada --enable-__cxa_atexit --enable-shared --with-sysroot=$HOME/gcc/x86_64-mybuild-freebsd7/ --with-headers=$HOME/gcc/x86_64-mybuild-freebsd7/usr/include --with-libs=$HOME/gcc/x86_64-mybuild-freebsd7/lib --with-arch-32=i586 --with-tune=core2 --enable-libstdcxx-allocator=new
собранныйкомпилятор устанавливается.
4) ПОВЕРХ КРОСС-КОМПИЛЯТОРА ПЕРЕУСТАНАВЛИВАЕМ НАТИВНЫЙ ДЛЯ СИСТЕМЫ КОМПИЛЯТОР выдавая make install в директории его сборки
5) Делаем копию дерева исходных кодов компилятора. На оригинал gcc-4_4-branch накладываем приведенный далее пач: patch -p0 < cross_natice.patch . Это необходимо так как на данный момент система сборки gnat в gcc разломана для кроскомпиляции нативного компилятора.
6) Также необходимо добавить в дерево исходных текстов компилятора файл gcc/ada/system-freebsd-x86_64.ads приведенные ниже
7) Кросскомпиляцией собираем в дирректроию $HOME/gcc/freebsd/ GMP и MPRF.
8) Собираем нативный для целевой системы компилятор. Пример конфигурации:
./gcc-4_4-branch/configure --build=x86_64-suse-linux --host=x86_64-mybuild-freebsd7 --prefix=$HOME/gcc/freebsd/ --enable-languages=c,ada --with-gmp=$HOME/gcc/freebsd/ --with-mpfr=$HOME/gcc/freebsd/ --disable-shared --disable-bootstrap --disable-multilib
9) Устанавливаем компилятор. Запаковываем его переписываем под FreeBSD 7 amd 64 и там уже на его основе собираем еще один gcc который и можно будет использовать.

Вот такой геморойчик!

Ответ на: комментарий от Dark_SavanT

Я в процессе, но пока они там свой порт родят... может кому надо будет тут по гуглу найдет.

mskmsk1985
() автор топика

Да какой же геморойчик? Все путем! Т.е. проблем с библиотеками не возникло? Тесты идут? Таки можно было, мне кажется, слегка сэкономить заранее объеденив gcc/binutils/gmp/mprf в одно деревце, конфигуратор это учитывает.

io ★★
()
Ответ на: комментарий от io

Геморойчик весь в том патчике который Я привел - когда он есть все круто а вот когда его надо было изобретать самому опытным путем то поверьте уж геморроя хватило.

mskmsk1985
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.