Компиляция FB на Linux
 

Построение FB на Linux довольно легко, потому что, как правило, распределения GNU / Linux обеспечивают все необходимые пакеты для разработки, и они могут быть установлены легко, по крайней мере, для нативной сборки. Поскольку поддержка 64 bit была добавлена в FB, нативная сборка всегда может быть возможна, независимо от того, какая у вас система 32 bit x86 или 64-bit x86_64. Кросс-компиляция 32-битной x86 версии FB на 64-битной x86_64 системе (или наоборот) и построение для других архитектур, таких как ARM тоже возможно.

Как правило составление FB-linux требует следующие пакеты:

  • существующая, рабочая FreeBASIC установка для самонастройки нового компилятора
  • gcc
  • make
  • ncurses заголовки & библиотеки (на самом деле только его libtinfo часть)
  • gpm заголовки & библиотеки (general purpose mouse)
  • X11 заголовки & библиотеки (включая X11, Xext, Xpm, Xrandr, Xrender)
  • OpenGL заголовки & библиотеки (обычно из проекта Mesa)
  • libffi заголовки & библиотеки

Нативная сборка

Получение исходного кода FB

Чтобы скомпилировать новую версию FB, сначала необходимо получить исходный код FB. Предполагается, что у вас есть каталог с названием fbc, содержащий последний FB исходный код.

Получение существующей установки FB-linux для начальной загрузки

Нам понадобится рабочая установка FB-linux для загрузки нового компилятора FB. Если у вас нет установленной нативной версии FB, скачайте последний релиз FreeBASIC-X.XX.X-linux для вашей системы (32bit x86, 64bit x86_64, ARM, и т.д.) с FB сайта загрузки, затем извлеките и установите его:

$ tar xf FreeBASIC-X.XX.X-linux.tar.gz
$ cd FreeBASIC-X.XX.X-linux
$ sudo ./install.sh -i

Вполне возможно, что вы можете получить рабочую FB установку из других источников, кроме проекта FBC. Например, в некоторых дистрибутивах уже может быть пакет freebasic .

Установка пакетов разработки

Ниже перечислены пакеты, которые вы должны установить для некоторых распространенных дистрибутивов GNU / Linux. Точные названия пакетов могут быть разными в зависимости от того, какой дистрибутив (или какая версия его) вы используете.

Системы на основе Debian (включая Ubuntu, Mint и т.д.):
  • gcc
  • make
  • libncurses5-dev
  • libgpm-dev
  • libx11-dev
  • libxext-dev
  • libxpm-dev
  • libxrandr-dev
  • libxrender-dev
  • libgl1-mesa-dev
  • libffi-dev

OpenSUSE:
  • gcc
  • make
  • ncurses-devel
  • gpm-devel
  • libX11-devel
  • libXext-devel
  • libXpm-devel
  • libXrandr-devel
  • libXrender-devel
  • Mesa-libGL-devel
  • libffi48-devel

Fedora:
  • gcc
  • make
  • ncurses-devel
  • gpm-devel
  • libX11-devel
  • libXext-devel
  • libXpm-devel
  • libXrandr-devel
  • libXrender-devel
  • mesa-libGL-devel
  • libffi-devel

Компиляция FB

Компиляция FB изначально проста, запустите "make" в каталоге FBC исходного кода. Это построит нативную установку FB , соответствующую архитектуре системы, при условии, что существующая FBC установка в системе производит собственные программы.

$ cd fbc
$ make

Это должно будет создать bin/fbc компилятор и библиотеки lib\freebasic\linux-[architecture]\.

После этого вы можете установить новую сборку FBC в /usr/local запустив "make install", и заменить старую установку FB:

$ sudo make install

Компиляция 32бит FB на 64бит системе с существующим 32бит FB

Кроме нативной сборки, вы можете также сделать не нативную сборку, такую как сборка 32бит версии FB на 64-битной системе, с использованием существующей 32бит FB сборки. Это было очень распространено, перед тем, как поддержка 64 бита была добавлена в FB. Это требует немного иной порядок в отличии от нативной сборки.

  • Получить исходный код FB.
  • Установите 32бит версию FB для начальной загрузки (вместо нативной версии 64бит).
  • Установите пакеты разработки 32бит (не только нативные 64bit).
64бит Debian/Ubuntu пример:
      • gcc-multilib
      • make
      • lib32ncurses5-dev
      • libx11-dev:i386
      • libxext-dev:i386
      • libxpm-dev:i386
      • libxrandr-dev:i386
      • libxrender-dev:i386
      • libgl1-mesa-dev
      • libgpm-dev
      • lib32ffi-dev
64bit OpenSUSE пример:
      • gcc-32bit
      • make
      • ncurses-devel-32bit
      • gpm-devel
      • libX11-devel-32bit
      • libXext-devel-32bit
      • libXpm-devel-32bit
      • libXrandr-devel-32bit
      • libXrender-devel-32bit
      • Mesa-libGL-devel-32bit
      • libffi48-devel-32bit
  • Добавьте следующий файл config.mk в каталоге исходника FBC (рядом с FB makefile):
CC = gcc -m32
TARGET_ARCH = x86
Это файл скажет о том, что FB сборка для 32бит вместо 64бит умолчанию.

Установите CC: gcc -m32 вместо gcc , что вызовет компиляцию всего C кода для 32 бит, а не для 64 бит по умолчанию.

Предполагая, что существующая сборка fbc 32 бита, она уже будет по умолчанию компилироваться в 32 бит, так что установка fbc: fbc -arch 32 вместо fbc не требуется (старше 32бит FBC версии раньше не было,  -arch 32 вариант в любом случае).

Настройку TARGET_ARCH для x86 необходимо переопределить в FB makefile: uname -m (потому что возвращает x86_64 на 64бит). Это позволит сделать сборку FB с выбором нужных модулей x86 rtlib / gfxlib2 и использовать правильные каталоги для x86.
  • Запустите "make" и пусть FB компилируется:
$ cd ~/fbc
$ make
  • При желании, установите недавно построенную 32bit FB сборку в /usr/local:
$ sudo make install