fbc командная строка
 
Использование fbc командной строки.

Официальный FreeBASIC дистрибутив поставляется с FBC. FBC - это компилятор командной строки и может быть запущен из консоли в DOS, командной строки Windows или оболочки Linux. Выполнение FBC в консоли без параметров выводит на экран список доступных параметров или переключателей командной строки, которые могут использоваться, чтобы скорректировать поведение компилятора.

В самом простом варианте FBC берет исходный файл в качестве параметра командной строки и строит исполняемый файл. Делается это путем компиляции исходного файла (.BAS) в ассемблерный файл (.ASM). Затем следует компиляция (.ASM) в объектный файл (.О), используя GAS и, наконец идет связывание этого объекта (.O) с помощью линкера LD с другими объектными файлами и библиотеками, собирая окончательный исполняемый файл. Ассемблерный листинг и скомпилированные объектные файлы будут удалены после полной компиляции (по умолчанию). Например, следующая команда

fbc foo.bas

построит исполняемы файл foo.exe в DOS и Windows, и ./foo в Linux. FBC cможет принять несколько исходных файлов одновременно, собрать и связать их все в один исполняемый файл. Например, следующая команда:

fbc foo.bas bar.bas baz.bas

построит исполняемый файл foo.exe в DOS и Windows, и ./foo в Linux. Файл foo.bas был определен первым, в итоге этот модуль окажется точкой входа в исполняемый файл, а также обеспечит его имя. Чтобы указать другую точку входа или имя исполняемого файла, используйте "-m" и "-x" опции соответственно. Чтобы иметь, например, baz.bas в качестве точки входа в исполняемый файл, а так же конечное имя исполняемого файла  foobar.exe, вы должны прописать параметры примерно так:

fbc -x foobar.exe -m baz foo.bas bar.bas baz.bas

Используя опцию "-x" важно понимать, что имя будет именно таким, как вы его пропишете, так например в Linux, прошлый вызов командной строки создаст файл ./foobar.exe.

Синтаксис

fbc [ опции ] [ список имен файлов ]

Список имен файлов может быть с такими расширениями:

Расширение файла Описание
.basИсходный файл FreeBASIC
.a Библиотека
.oОбъектный файл
.rc Сценарий ресурса (только Windows)
.res Скомпилированный ресурс (только Windows)
.xpmX icon pixmap (только Linux)


Исходный код
-b < name >
Добавить исходный файл в компиляцию
-i < name >
Добавить путь для поиска включаемых файлов
-include < name >
Включить файл заголовка для каждого исходного файла в процессе компиляции
-d < name=val >
Добавить препроцессорные определения
-lang < name >
Выбирает язык совместимости: fb, fblite, qb, deprecated
-forcelang < name >
Выбирает совместимость для языка, переопределяет #lang/$lang в коде

Генерация кода
-target < platform >
Установка целевой платформы для кросс-компиляции
-gen < backend >
Устанавливает бэкэнд компилятора (по умолчанию 'gas')
-asm < format >
Задает формат ассемблера для Asm блока
-arch < type >
Установка целевой архитектуры (по умолчанию: 486)
-O < level >
Установка уровня оптимизации(-gen gcc)
-vec < level >
Установка уровня векторной оптимизации компилятором (по умолчанию: 0)
-fpu < type >
Установка модуля для арифметики с плавающей точкой (значение по умолчанию: FPU)
-fpmode < type >
Выбор между быстрой и точной операцией с плавающей точкой (по умолчанию: PRECISE)
-z < value >
Установить разные или экспериментальные варианты

Компиляция
-m < name >
Главный файл без расширения, точка входа (по умолчанию всегда первый .bas файл в командной строке)
-g
Добавить отладочную информацию
-profile
Включить профилирование функций
-e
Добавить проверку ошибок
-ex
Добавить проверку ошибок с поддержкой RESUME
-exx
о же, что и -ex , плюс проверка границ массива и нулевых указателей
-Wa < opt >
Передаваемые опции в GAS (разделяются запятыми)
-Wc < opt >
Передаваемые опции в GCC (разделяются запятыми)
-o < name >
Установить путь/имя объектного файла (должен быть передан после .bas файла)

Линковка
-a < name >
Добавить объектный файл в список компоновщика
-l < name >
Добавить файл библиотеки к списку компоновщика
-p < name >
Добавить путь для поиска библиотек
-mt
Линковка библиотеки, ориентированной на многопоточное исполнение
-nodeflibs
Не включать библиотеки по умолчанию
-static
Задать предпочтение для статических библиотек вместо динамических при линковке
-map < name >
Сохранить карту связывания к имени файла
-Wl < opt >
Передаваемые опции в LD (разделяются запятыми)
-export
Экспорт символов для динамического связывания
-lib
Создать статическую библиотеку
-dylib
Создать DLL, в том числе и библиотеку импорта
-dll
Создать DLL, в том числе и библиотеку импорта. (то же, что и -dylib)
-x < name >
Установить имя для библиотеки или исполняемого файла

Поведение
-prefix < path >
Установить префикс пути компилятора
-version
Показать компилятора версию в командной строке, не компилируя и не связывая
-v
Установка подробного режима при компиляции
-print < option >
Позволить компилятору отображать определенную информацию (host, target)
-pp
Выпустить предварительно обработанный входной файл препроцессором, не компилируя
-r
Записать только промежуточный файл(ы), без сборки и линковки
-rr
Записать только ассемблерные файлы, без сборки и линковки
-c
Только компиляция, без линковки
-R
Не удалять промежуточный файл(ы)
-RR
Не удалять ассемблерные файлы
-C
Не удалять объектный файл(ы)
-w < value >
Установка минимального уровня предупреждений: all, pedantic или значение
-maxerr < val >
Остановка парсинга если значение <val> ошибок произошло
-noerrline
Не показывать исходную строку, где произошла ошибка

Специфические цели
-s < name >
Установка подсистемы (gui, console)
-t < value >
Установка размера стека в килобайтах (по умолчанию: 1M)

Мета
@< file >
Чтение (дополнительно) параметров командной строки из файла


 

Пример

fbc myfile.bas
(В DOS версии FBC, скомпилировать и скомпоновать DOS исполняемый MYFILE.EXE)

fbc -s gui myfile.bas
(В Windows версии FBC, скомпилировать и скомпоновать исполняемый myfile.exe для Windows. При запуске программы не будет отображаться окно консоли ("MS-DOS Prompt"))

fbc -lib module1.bas module2.bas module3.bas -x libmylib.a
(Скомпилировать и связать статическую библиотеку libmylib.a из трех исходных файлов)

fbc -m main_module -c main_module.bas
(Компиляция объектного файла main_module.o и отметить его в качестве точки входа)

fbc -c sub_module.bas
(Компиляция объектного файла sub_module.o)

fbc -x application.exe main_module.o sub_module.o
(Линковка исполняемого приложения application.exe)

См. также