Подготовка
Получение исходного кода FB
Для компиляции новой версии FB, сначала необходимо
получить исходный код FB.
Предполагается, что у вас есть каталог с названием
fbc, содержащий
последний FB исходный код.
Установка набор инструментов MinGW-w64
В этом руководстве мы будем использовать 32 битный или 64 битный набор
инструментов
MinGW-w64 для
создания 32-битной или 64-битной версии FB, соответственно. Пройдите на
http://sourceforge.net/projects/mingw-w64/files/ и найдите
скомпилированные инструменты Win64 или
скомпилированные инструменты Win32 , в зависимости от того, что вы
хотите составить 32-битную или 64-битную версию FB. Введите
Personal Builds/mingw-builds/
подкаталог, выберите последнюю GCC версию, затем введите
threads-win32/sjlj/
подкаталог и загрузите пакет инструментария оттуда.
Извлеките набор инструментов в новую папку
C:\MinGW-w64 , таким
образом в итоге вы получите
C:\MinGW-w64\bin\gcc.exe.
Если вы знаете, что делаете, вы также можете использовать другой набор
инструментов MinGW-W64, или даже один из различных проектов, таких как
MinGW.org или TDM-GCC. У нас есть еще немного информации о выборе средств по
MinGW на странице
DevGccToolchainChoice.
Установка MSYS
MSYS (оригинальное ответвление Cygwin) даст Unix-подобную среду оболочки для
Windows, в том числе GNU make, оболочку Bash и Unix командную строку
инструментов, такие как
cp и
rm. Для FB мы должны
запустить FB Makefile и тестовый набор FB.
Необходимые пакеты MSYS можно скачать и распаковать с помощью последней
версии
mingw-get
установка из проекта MinGW.org.
Запустите инсталлятор и выберите каталог инсталляции
C:\MinGW.
Таким образом, это будет отдельно от
C:\MinGW-w64, во избежание
потенциальных конфликтов. Менеджер установки MinGW (
C:\MinGW\bin\mingw-get.exe)
после должен быть открыт автоматически. Используйте для установки
mingw-developer-toolkit
пакет
BASIC из основного раздела Setup, нажав на
окно слева имени пакета и выбора "Mark for Installation", затем выберите Installation -> Apply Changes
из меню приложения.
Это должно установить наиболее часто используемые компоненты MSYS. Мы не
хотим устаноавливать
mingw32-base или
mingw32-gcc-* пакеты
здесь, потому что мы используем внешний набор инструментов MinGW-W64 вместо
MinGW.org. Если вы не хотите использовать программу установки MinGW.org, вы
также можете скачать пакеты MinGW/MSYS вручную из
MinGW
проектов с сайта загрузки.
В конечном счете, MSYS должен быть установлен в
C:\MinGW\msys\1.0\.
Теперь есть три важных каталога:
C:\MinGW-w64\bin\,
C:\MinGW\bin\
и
C:\MinGW\msys\1.0\bin\. Все они должны быть добавлены к
переменной PATH среды (в данном порядке), так чтобы программы, которые они
включают были найдены при вызове из командной строки или из Makefile FB.
Для того чтобы избежать изменения системной
PATH, вы можете
использовать скрипт
open-msys.bat приведенный ниже, чтобы открыть
bash MSYS с необходимыми настройками
PATH,
каждый раз, вы должны использовать его:
set PATH=C:\MinGW\msys\1.0\bin;%PATH%
set PATH=C:\MinGW\bin;%PATH%
set PATH=C:\MinGW-w64\bin;%PATH%
C:\MinGW\msys\1.0\msys.bat
Получение libffi
FB rtlib исходный код зависит от заголовков
libffi (
ffi.h
и
ffitarget.h) , которые должны быть доступны в наборе инструментов gcc
в папке include (
C:\MinGW-w64\i686-w64-mingw32\include для 32 bit
MinGW-w64 и
C:\MinGW-w64\x86_64-w64-mingw32\include для 64 бит MinGW-w64).
Кроме того, библиотека
libffi.a потребуется позже при компиляции
программ FB, которые используют
Threadcall.
Готовые версии libffi доступны в
fbc
области загрузок.
Если вы не хотите использовать готовые версии, но предпочитаете
компилировать libffi вручную, вместо этого, то это довольно просто. libffi
использует автоутилиты (autoconf, automake, libtool) построения системы,
таким образом соответствующие пакеты должны быть установлены для MinGW/MSYS.
Откройте MSYS bash (с надлежащими настройками PATH).
- 64бит: Это требует работы вокруг MSYS' uname
которая по-прежнему возвращает 32bit даже на 64-битных:
$ ./configure --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32
$ make
Это должно произвести libffi заголовки в подкаталоге
include/
и собранную библиотеку в подкаталоге
.libs/ . Вы можете затем
скопировать их в соответствующие каталоги набора инструментов MinGW-w64,
таким образом, чтобы gcc нашел их.
Автономная сборка (автономная FB)
Получение существующей установки FB для начальной загрузки
Нам понадобится рабочая установка FB-win32 для загрузки нового компилятора
FB. Если у вас еще не установлен FB-win32, скачайте последний релиз
FreeBASIC-X.XX.X-win32
с
FB
сайта загрузки. Он должен быть извлечен в
C:\FreeBASIC-X.XX.X-win32.
Построение новой установки FB
Если вы хотите создать
традиционную
автономную FB-win32 установку как один из пакетов
FreeBASIC-X.XX.X-win32,
вам нужно установить переменную ENABLE_STANDALONE в FB makefile. Кроме того,
для компиляции для 64 bit необходимо установить переменную
TARGET_ARCH
вручную, потому что MSYS'
uname -m команда не поддерживает 64-бит и
таким образом FB makefile будет неправильно определять систему. Предполагая,
что FB источники расположены в
C:\fbc, создайте файл
C:\fbc\config.mk
содержащий следующее:
ENABLE_STANDALONE = 1
# Manually set TARGET_ARCH to override uname check for 64bit
TARGET_ARCH = x86_64
Затем откройте MSYS bash используя скрипт .bat , упомянутый выше (с
надлежащими настройками PATH), перейдите в каталог с FB исходным кодом,
запустите "make" с
FBC=... переменной, указывающей на существующий
fbc.exe и пусть он компилируется:
$ cd /c/fbc
$ make FBC=C:/FreeBASIC-X.XX.X-win32/fbc.exe
Это должно создать компилятор
fbc.exe и библиотеки
lib\win32\
или
lib\win64\ соответственно. Для выполнения этой новой установки
FB, вам нужно добавить binutils (as.exe, ar.exe, ld.exe, dlltool.exe) в
bin\win32\
и скопировать некоторые библиотеки MinGW в
lib\win32\.
- Скопируйте в C:\fbc\bin\win32 (32бит) или C:\fbc\bin\win64 (64бит):
- C:\MinGW-w64\bin\{ar,as,ld,dlltool}.exe
- GoRC.exe из http://www.godevtool.com/
- Скопируйте в C:\fbc\lib\win32 (32бит) или C:\fbc\lib\win64 (64бит):
- C:\MinGW-w64\[target]\lib\{crt2,dllcrt2,gcrt2}.o
- C:\MinGW-w64\[target]\lib\lib{gmon,mingw32,mingwex,moldname}.a
- C:\MinGW-w64\[target]\lib\lib{advapi32,gdi32,kernel32,msvcrt,user32,winmm,winspool}.a
(переименовать lib*.dll.a если хотите)
- C:\MinGW-w64\lib\gcc\[target]\[version]\{crtbegin,crtend}.o
- C:\MinGW-w64\lib\gcc\[target]\[version]\libgcc.a
- libffi.a (пакет готовых libffi или свою собственную сборку)
([target]
относится к i686-w64-mingw32 для 32bit MinGW-w64
или x86_64-w64-mingw32 для 64bit MinGW-w64, и [version]
- это номер версии gcc)
Если вам требуется , можно скопировать больше библиотек
C:\MinGW-w64\lib\gcc\[target]\[version]\libsupc++.a C++
библиотеки, или другие Win32 API DLL библиотеки импорта из
C:\MinGW-w64\[target]\lib\
.
Теперь новая установка FB должна быть готова к использованию. Вы можете
использовать ее прямо из исходного дерева или скопировать ее в другое место.
Ниже приведены соответствующие файлы и каталоги:
- fbc.exe
- bin/win32/ (32бит) или bin/win64/ (64бит)
- inc/
- lib/win32/ (32бит) или lib/win64/ (64бит)
Обычная сборка (как в Linux)
Получение существующей установки FB для начальной загрузки
Нам понадобится рабочая установка
fbc для загрузки
нового компилятора FB. Если вы не имеете еще установленный
fbc, скачайте последний fbc-X.XX.X-mingw-w64-i686 (32бит)
или fbc-X.XX.X-mingw-w64-x86_64 (64бит) пакет с
FB
сайта загрузки, и распакуйте его в каталог MinGW-w64 (
C:\MinGW-w64)
как пакет MinGW. Это добавит работающий fbc в вашу установку MinGW-w64.
Построение новой установки FB
Для того чтобы создать обычную (не автономную) сборку, просто скомпилируйте
FB без указания
ENABLE_STANDALONE. Однако, для того, чтобы
скомпилировать для 64 бит необходимо установить переменную
TARGET_ARCH
вручную, потому что MSYS'
uname -m команда не поддерживает 64-бит и
таким образом FB makefile будет неправильно определять систему.
- 32бит: не нужно config.mk.
- 64бит: создать config.mk содержащий следующее:
# Manually set TARGET_ARCH to override uname check for 64bit
TARGET_ARCH = x86_64
Затем откройте MSYS bash используя скрипт .bat , упомянутый выше (с
надлежащими настройками PATH), перейдите в каталог с FB исходным кодом,
запустите "make" и пусть компилируется:
$ cd /c/fbc
$ make
Это должно создать компилятор
bin/fbc.exe и библиотеки
lib\freebasic\win32\
или
lib\freebasic\win64\ соотвественно.
При желании, вы можете скопировать эту установку в дерево
C:\MinGW-w64
запустив "make install":
$ make install prefix=C:/MinGW-w64
Может быть полезным сохранить префикс переменной в
config.mk, так
чтобы запускать
make install в будущем без необходимости
беспокоиться об этом:
# config.mk:
prefix = C:/MinGW-w64
Установка
FBC в каталог MinGW означает, что он
действует, как если бы он был частью MinGW. Однако
FBC
можно использовать из исходного дерева, без установки его в другом месте. Он
будет вызывать
gcc -print-file-name=... для того, чтобы найти MinGW
binutils и библиотеки.