Компиляция FB для DOS
 

В DOS-версии FB обычно составляется на 32-разрядной системе Windows с DJGPP и DOS версией установки FB.

Подготовка

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

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

Установка DJGPP

Чтобы установить DJGPP, нам нужно скачать несколько пакетов, которые можно найти на Домашней странице DJGPP. FB нужен djdev204.zip из каталога beta/v2/, и несколько других из каталога beta/v2gnu/. Если чего то не хватает там, вы также можете посмотреть в каталог current/v2gnu/. Необходимы следующие пакеты:

  • binutils (bnu*b.zip)
  • bash (bsh*.zip)
  • djdev (djdev*.zip) - подобрать djdev204.zip или более поздней версии в каталоге beta/
  • fileutils (fil*.zip)
  • gcc (gcc*b.zip)
  • g++ (gpp*b.zip)
  • make (mak*b.zip)
  • shellutils (shl*b.zip)
  • textutils (txt*b.zip)

Установка DJGPP путем извлечения всего в C:\DJGPP и добавление переменной среды с именем "DJGPP", со значением C:\DJGPP\djgpp.env.

Это может быть полезным (особенно при работе параллельно с MinGW) использовать пакетный скрипт для запуска терминала с помощью DJGPP инструментов в своей PATH переменной среде, вместо изменения системной глобальной переменной среды PATH:

set DJGPP=C:\DJGPP\djgpp.env
set PATH=C:\DJGPP\bin;%PATH%
cd C:\
cmd

В конце концов вы должны иметь возможность открыть командную строку из C:\DJGPP\bin в своей PATH, таким образом, чтобы команда gcc запускала DJGPP gcc (а не MinGW gcc).

Автономная сборка (самодостаточный FB)

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

Нам понадобится рабочая установка FB-dos для загрузки нового компилятора FB. Если вы еще не имеете FB-dos, скачайте последний FreeBASIC-X.XX.X-dos релиз из FB сайта загрузки. Он должен быть извлечен как C:\FreeBASIC-X.XX.X-dos.

Построение новой установки FB

Если вы хотите создать традиционную автономную FB-dos установку как один из FreeBASIC-X.XX.X-dos релизов, вам нужно сообщить FB в makefile, установив переменную ENABLE_STANDALONE. Предполагая , что FB источники расположены в C:\fbcdos, создайте файл C:\fbcdos\config.mk содержащий следующее:

ENABLE_STANDALONE = 1

Затем откройте командную строку с C:\DJGPP\bin в его PATH, перейдите в каталог с исходным кодом FB, запустите "make" с переменной FBC=... существующего fbc.exe , используя начальную загрузку, и пусть он компилируется:

> cd C:\fbcdos
> make FBC=C:/FreeBASIC-X.XX.X-dos/fbc.exe

Это должно создать компилятор fbc.exe и библиотеки в lib\dos\. Для выполнения этой новой установки FB, вам нужно добавить binutils (as.exe, ar.exe, ld.exe) в bin\dos\ и скопировать  некоторые библиотеки DJGPP в lib\dos\.

  • Скопируйте эти файлы в C:\fbcdos\bin\dos:
    • C:\DJGPP\bin\{ar,as,ld}.exe
  • Скопируйте эти файлы в C:\fbcdos\lib\dos:
    • C:\DJGPP\lib\{crt0,gcrt0}.o
    • C:\DJGPP\lib\lib{emu,m}.a
    • C:\DJGPP\lib\gcc\djgpp\[version]\libgcc.a

Вы можете скопировать несколько библиотек, если вы нуждаетесь в них, например в C:\DJGPP\lib\gcc\djgpp\[version]\libsupcxx.a C++ библиотеки поддержки, или другие из каталога C:\DJGPP\lib\.

Замечание о libc.a: FB необходима модифицированная версия DJGPP libc.a , потому что DJGPP libc.a содержит баг (см. contrib/djgpp/readme.txt из исходного кода FBC для получения дополнительной информации). FB Makefile должен позаботиться об этом и выпустить модифицированную версию libc.a в lib\dos\libc.a. Он не должен быть перезаписан из оригинала DJGPP в libc.a.

Теперь, новая установка FB должна быть готова к использованию. Вы можете использовать ее прямо из исходного дерева или скопировать ее в другое место. Ниже приведены соответствующие файлы и каталоги:

  • fbc.exe
  • bin/dos/
  • inc/
  • lib/dos/

Если вам необходимо восстановить его в будущем (например после новинки исходного FB кода из Git), вы можете позволить ей восстановить себя, просто выдав "make" без указания внешнего FBC. Это будет использовать по умолчанию, FBC=fbc, который в данном случае соответствует fbc.exe в том же каталоге.

> cd C:\fbcdos
> make

Обычная сборка (как в Linux)

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

Нам понадобится рабочая установка fbc для загрузки нового компилятора FB. Если у вас еще нет FBC, скачайте последний релиз fbcXXXXb из FB сайта загрузки, и извлеките его в директорию DJGPP (C:\DJGPP) как пакет DJGPP. Это добавит рабочий FBC к установке DJGPP.

Построение новой установки FB

В целях создания обычной (не автономной) сборки как один из пакетов fbcXXXXb, просто скомпилируйте FB без указания ENABLE_STANDALONE. Откройте командную строку с C:\DJGPP\bin в его PATH, перейдите в каталог с исходным кодом FB, запустите "make" и пусть компилируется.

> cd C:\fbcdos
> make

Это должно создать компилятор bin/fbc.exe и библиотеки lib\freebas\dos\.

При желании, вы можете скопировать эту установку в C:\DJGPP дерево выполнив "make install":

> make install prefix=C:/DJGPP

Может быть полезно сохранить переменную префикса в config.mk, так что вы можете запустить make install в будущем без необходимости устанавливать его вручную снова:

# config.mk:
prefix = C:/DJGPP

Установка FBC в DJGPP дерево означает, что он действует так, как будто это часть DJGPP. Тем не менее можно использовать FBC из исходного дерева, без установки его в другом месте. Это вызовет gcc -print-file-name=... для того, чтобы найти в DJGPP бинарники и библиотеки.