Компиляция из SVN для Linux
 
Это руководство показывает, как собрать 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

    • CC=<path/to/gcc>
(Полезно, если не используется по умолчанию в системе)
    • RANLIB=<path/to/ranlib>
    • CFLAGS=<gcc compile options>
Полезно для переопределения по умолчанию из "-O2 -g"  в "-O2", если вы не хотите отладочные символы.
Вы можете передать их в makefile тоже, но путем передачи их для настройки, они будут записаны в файл Makefile и вам не придется помнить о них в следующий раз.
make

    • AR=<path/to/ar>
(Переменная АР не направляются в конфигурирование в настоящее время, поэтому он должен быть передан в Makefile)

Полезные опции для построения компилятора

configure

    • --disable-objinfo
Если указанный fbc не будет связан с libbfd/libiberty/libintl. Это поможет избежать многих неприятностей во время компиляции FBC, за счет отключения функций objinfo.
    • --enable-standalone
Построит автономный 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
    • FBC=<path/to/fbc>
make

    • DEBUG=1
fbc будет компилироваться с опцией -g. Используется для отладки fbc.
Для примера:
make DEBUG=1
    • EXTRAERR=1
fbc будет компилироваться с опцией -exx. Используется для отладки fbc. Результате FBC будет очень медленным.
    • FB_BFD=1 BFD_VER=<XXX>
В результате будет 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.