Это руководство показывает, как собрать Linux FreeBASIC (компилятор и
библиотеки) на системе x86 Linux, используя версию Linux FreeBASIC. Отметим,
что компилирование 32-битного FB на 64-битной системе Linux требует
дополнительных шагов и чуть более сложнее, хотя конечно возможно.
Подготовка окружающей среды
Выберите место для SVN FreeBASIC, например:
~/FreeBASIC.
Затем проверьте текущую разрабатываемую базу:
cd ~/FreeBASIC
svn checkout https://fbc.svn.sourceforge.net/svnroot/fbc/trunk/FreeBASIC .
Необходима готовая существующая установка FreeBASIC.
Вам понадобится много средств разработки и библиотек, в том числе
нижеперечисленные, но не ограничиваясь:
- subversion
- gcc
- g++ (или gcc-c++ на Fedora)
- binutils-dev (или binutils-devel на Fedora, и binutils-static
на Fedora 14 и более поздние)
- perl
- autoconf
- libncurses-dev (или ncurses-devel на Fedora)
- libx11-dev (или libX11-devel на Fedora)
- libxext-dev (или libXext-devel на Fedora)
- libxpm-dev (или libXpm-devel на Fedora)
- libxrandr-dev (или libXrandr-devel на Fedora)
- libxrender-dev (или libXrender-devel на Fedora)
- libgpm-dev (или gpm-devel на Fedora)
- freeglut3-dev (или freeglut-devel на Fedora, или другие,
которые получаются по запросу в OpenGL заголовках)
Компиляция FreeBASIC
Откройте оболочку и введите следующие команды.
cd ~/FreeBASIC
Компиляция нового fbc:
cd src/compiler/obj/linux
../../configure
make
make install
cd ../../../..
Компиляция новых libfb.a и libfbmt.a:
cd src/rtlib/obj/linux
../../configure CFLAGS=-O2
make
make MULTITHREADED=1
make install
cd ../../../..
Компиляция новой libfbgfx.a:
cd src/gfxlib2/obj/linux
../../configure CFLAGS=-O2
make
make install
cd ../../../..
Теперь вы можете установить новый fbc/libraries в /usr/local, перезаписывая
старую установку:
sudo ./install.sh -i
Примечание:
Если существующая установка и просто скомпилированный FreeBASIC используют
разные префиксы (или один является автономным, но не другой), то install.sh
или install-standalone.sh сценарии не заменят существующие файлы. Вам нужно
будет удалить предыдущую установку сначала, либо запуском
install.sh -u
или
install-standalone -u в FreeBASIC каталогах , куда вы
установили существующий FreeBASIC , или вручную удалить файлы.
Пересборка после обновления SVN или изменений в
исходном коде
Вы можете пересобрать компилятор и библиотеки (или просто
измененный компонент) в том же каталоге, как и прежде, с помощью тех же
команд, как и раньше. С момента установки FB в /usr/local , этот каталог и
используется для компиляции, вам не придется беспокоиться о проблемах.
Однако в случае, если вы используете standalone fbc и восстанавливаете его в
своем собственном каталоге, вы можете столкнуться с теми же проблемами, как
описано в страницах по компиляции для DOS/win32.
Полезные возможности для построения rtlib и gfxlib
configure
(Полезно,
если не используется по умолчанию в системе)
- RANLIB=<path/to/ranlib>
- CFLAGS=<gcc compile options>
Полезно для переопределения по умолчанию из "-O2 -g" в "-O2",
если вы не хотите отладочные символы.
Вы можете передать их в makefile тоже, но путем передачи их для настройки,
они будут записаны в файл Makefile и вам не придется помнить о
них в следующий раз.
make
(Переменная АР не направляются в конфигурирование в настоящее время,
поэтому он должен быть передан в Makefile)
Полезные опции для построения компилятора
configure
Если указанный fbc не будет связан с libbfd/libiberty/libintl. Это
поможет избежать многих неприятностей во время компиляции
FBC, за счет отключения
функций objinfo.
Построит автономный fbc, который располагается в FreeBASIC каталоге и не
нуждается в установке. Все библиотеки и binutils будут в каталоге
FreeBASIC, и компилятор будет их искать именно там. Вы можете посмотреть
на выпуск FreeBASIC-linux-standalone, чтобы видеть, какие файлы
ожидаются. install-standalone.sh сценарий может быть
использован для install/uninstall этого fbc в/из /usr/share/freebasic.
- --prefix=/a/path/to/somewhere
Изменяет /usr/local преффикс для чего либо. Имеет смысл только для не
standalone сборки.
Для примера:
../../configure --prefix=/usr
Тогда
install.sh -i установит в /usr вместо /usr/local (и FBC
будет использовать /usr вместо /usr/local для поиска binutils, библиотек
и заголовков).
- --enable-crosscomp-<target>
FBC будет составлен с поддержкой кросс-компиляции для указанной цели. На
самом деле для кросс-компиляции потребуются дополнительные binutils и
библиотеки в каталогах FreeBASIC/bin/<target> и FreeBASIC/lib/<target>. Кроме
того это может работать только со сборкой
fbc
standalone.
Для примера:
../../configure --enable-crosscomp-dos
make
fbc
будет компилироваться с опцией
-g. Используется для отладки fbc.
Для примера:
make DEBUG=1
fbc
будет компилироваться с опцией -exx. Используется для отладки fbc.
Результате FBC будет очень медленным.
В
результате будет FBC с помощью FB libbfd заголовков, используя libbfd
непосредственно, а не с помощью DJGPP C libbfd заголовков через C libbfd
wrapper FBC по умолчанию . FB libbfd версия заголовков должна быть
указана, например BFD_VER=217. libbfd.a, с помощью которой будет
связан этот fbc, должен соответствовать этой версии точно.
Примечание: Процесс связывания для построения FBC
предпочитают системы libbfd(из /usr/lib) libbfd в пути
поиска библиотек (например, /usr/share/freebasic/lib/linux), и он будет
предпочитать статические библиотеки (libbfd.a) общим библиотекам (libbfd.so).
Из-за этого она проще в использовании оболочки по умолчанию C libbfd,
если вы точно не знаете, libbfd версию вашей системы, и это не изменится
(что маловероятно).
Если вы не хотите связать против общей libbfd (которое может
присутствовать в вашей системе из-за binutils), вы можете разместить
(конкретный) libbfd.a в /usr/local/lib и он будет предпочтительнее чем
/usr/lib.