В 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 бинарники и библиотеки.