Внешние инструменты, на которые компилятор FreeBASIC (FBC) может ссылаться
во время процесса компиляции.
FreeBASIC использует несколько инструментов для
компиляции исходного кода в дополнение к fbc компилятору. Точные
инструменты, используемые с fbc и каким образом они вызываются,
зависят от того, как fbc был сконфигурирован, на какой платформе
fbc работает, для какой платформы создается исполняемая
программа , и другие опции (как переменные окружения и параметры
командной строки).
FreeBASIC (fbc), возможно, был сконфигурирован одним из двух
способов: или как автономный (standalone) или снабженный
префиксом (
Prefixed). Автономная
версия ищет каталоги относительно того, где исполняемая
программа (
fbc) расположена. В версии
, снабженной префиксом путь ищется по отношению к префиксу ,
который жестко задан в компиляторе. Для получения дополнительной
информации о конфигурировании FreeBASIC , посмотрите текстовый
файл INSTALL, расположенный в каталоге src/compiler исходников
FreeBASIC.
Вы можете проверить, автономна(
standalone)
ваша установленная версия fbc или "снабжена префиксом"
("prefixed"), вызывая fbc с параметром
-version
в командной строке.
Standalone
Если fbc был сконфигурирован как "автономный", он будет
искать файлы относительно того, где fbc расположен. fbc в
"вершине" дерева каталогов и ищет подкаталоги ниже его.
"Главный" каталог (по умолчанию где fbc расположен) может быть
переопределен с помощью параметра командной строки
-prefix.
"topdir", показанный как каталог ниже, представляет каталог, где
fbc расположен, или каталог, определенный с помощью параметра
-prefix.
"<target>" относится к целевой платформе, имеющей то же имя, как
определено с помощью опции
-target.
Если это не кросс-компиляция, fbc смотрит в этих расположениях:
- /topdir/inc
- /topdir/lib/<target>
- /topdir/bin/<target>
- gcc запрашивает недостающие библиотеки (в настоящее время на Linux /
FreeBSD только)
Если это кросс-компиляция, fbc смотрит
в этих расположениях:
- /topdir/inc
- /topdir/lib/<target>
- /topdir/bin/<target>
- gcc ничего не запрашивает (только целевой каталог с библиотеками
используется)
Prefixed
Если fbc был сконфигурирован, как "prefixed", он будет
искать файлы относительно сконфигурированного префикса (жестко
задано в fbc). "prefix", показанный как каталог ниже,
представляет сконфигурированный префиксом каталог или каталог,
определенный с помощью параметра командной строки
-prefix.
"<target>" относится к целевой платформе, имеющей то же имя, как
определено с помощью опции
-target.
Если это не кросс-компиляция, fbc смотрит в этих расположениях:
- /prefix/include/freebasic
- /prefix/lib/freebasic/<target>
- /prefix/bin/freebasic/<target>
- gcc запрашивает недостающие библиотеки (в настоящее время на Linux /
FreeBSD только)
Если это кросс-компиляция, fbc смотрит
в этих расположениях:
- /prefix/include/freebasic
- /prefix/lib/freebasic/<target>
- /prefix/bin/freebasic/<target>
- gcc ничего не запрашивает (только целевой каталог с библиотеками
используется)
GCC Запросы
Если fbc неспособен определить местоположение файла, он
может вызвать gcc -print-file-name=<file>, чтобы запросить
расположение файла. Ниже приведены файлы, которые могут быть
расположены с использованием GCC:
- crt1.o
- crtbegin.o
- crtend.o
- crti.o
- crtn.o
- gcrt1.o
- libgcc.a
- libsupc++.a
- libc.so (Linux только)
Поиск бинарных файлов
fbc вызывает дополнительные инструменты (двоичные
исполняемые программы) как часть компиляции и процесса линковки.
Ниже представлен список инструментов , которые могут быть
вызваны fbc в зависимости от платформы, цели или типа
исполняемой программы или библиотеки, которая будет собрана:
- as
- ar
- ld
- gcc
- GoRC
- dlltool
- pexports
- cxbe
FBC будет искать эти инструмены следующим
образом:
- Если переменная окружения (в которой указано то же имя как и
у инструмента без какого-либо расширения, в верхнем
регистре) была установлена, то это явно указывает путь и имя
исполняемой программы, которая будет вызвана.
- Если файл (или символическая ссылка) существует в prefix/bin/freebasic/<target>,
или ./bin/<target> для версии standalone , тогда используется
это.
- В Linux, если инструмент не может быть найден в prefix/bin/freebasic/<target>,
или ./bin/<target> для версии standalone, fbc пытается
вызвать его по любому, поскольку это может быть установлено в системе и
расположено в PATH.
"<target>" относится к целевой платформе,
имеющей то же имя, как определено с помощью опции
-target.
См. также