Tools used by fbc
 
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 选项指定的名称相同的目标平台。

参考