FreeBASIC编译器(fbc)可以在编译过程中调用的外部工具。
说明
除了
fbc编译器之外,FreeBASIC还使用几种编译源代码的工具。
fbc使用的确切工具及其调用方式取决于如何配置
fbc,主机平台(其中fbc正在运行),目标平台(生成的可执行文件的运行位置)以及其他选项(例如环境变量和命令行选项)。
FreeBASIC(
fbc)可能已通过以下两种方式之一进行配置:独立或前缀。独立版本搜索相对于可执行文件所在位置的目录。前缀版本具有配置到编译器中的硬编码路径,指示它在哪里可以找到其他工具和库。有关配置FreeBASIC的更多信息,请参阅位于FreeBASIC源的src / compiler目录中的
INSTALL文本文件。
您可以使用
-version 命令行选项调用
fbc,检查您的已安装版本
fbc是否为“独立”或“前缀”。
独立
如果
fbc被配置为“独立”,它将搜索相对于
fbc可执行文件所在的文件。
fbc位于目录树的“顶部”,并在其下方搜索子目录。可以使用
-prefix 命令行选项覆盖“顶”目录(默认为
fbc所在的位置)。以下目录中显示的“topdir”表示
fbc可执行文件所在的目录,或使用
-prefix 命令行选项指定的目录(如果已给出)。“<target >”是指与
-target 选项指定的名称相同的目标平台。
如果不是交叉编译,
fbc在这些位置查找:
- /topdir/inc
- /topdir/lib/<target>
- /topdir/bin/<target>
- 查询缺少的图书馆(目前仅在linux / freebsd上)
如果交叉编译,fbc查找这些位置:
- /topdir/inc
- /topdir/lib/<target>
- /topdir/bin/<target>
- gcc不被查询(仅使用目标库目录)
前缀
如果
fbc被配置为“前缀”,它将搜索相对于配置的前缀的文件(硬编码在
fbc可执行文件中)。以下目录中显示的“前缀”表示已配置的前缀,或使用
-prefix 命令行选项指定的目录(如果已给出)。“
<target>”是指与
-target 选项指定的名称相同的目标平台。
如果不交叉编译,
fbc会在以下位置查看:
- /prefix/include/freebasic
- /prefix/lib/freebasic/<target>
- /prefix/bin/freebasic/<target>
- 查询缺少的图书馆(目前仅在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 only)
查找二进制
fbc将作为编译和链接过程的一部分调用其他工具(二进制可执行文件)。以下是fbc可能根据要生成的可执行文件或库的主机平台,目标或类型可以调用的工具(可执行文件)列表:
- as
- ar
- ld
- gcc
- GoRC
- dlltool
- pexports
- cxbe
fbc将以以下方式搜索这些工具:
- 如果已经设置了一个环境变量(与没有任何扩展名的工具相同的名称,全部大写),它将显式指示要调用的可执行文件的路径和名称。
- 如果文件(或符号链接)存在于prefix/bin/freebasic/<target>或./bin/<target>中的独立版本,请使用它。
- 在Linux上,如果在prefix/bin/freebasic/<target>或./bin/<target>中找不到该独立版本的工具,fbc将尝试调用它,因为它可能安装在系统上并位于PATH上。
“
<target>”是指与
-target 选项指定的名称相同的目标平台。
参考