Skip to content

fbc 使用的工具


FreeBASIC 编译器(fbc)在编译过程中可能调用的外部工具。

描述

FreeBASIC 除了 fbc 编译器本身之外,还使用多个工具来编译源代码。fbc 使用的确切工具及其调用方式取决于 fbc 的配置方式、宿主平台(fbc 运行的平台)、目标平台(生成的可执行文件将运行的平台)以及其他选项(如环境变量和命令行选项)。

FreeBASICfbc)可以以两种方式之一进行配置:独立(standalone)或带前缀(prefixed)。独立版本在可执行文件所在位置的相对目录中搜索文件。带前缀版本在编译器中硬编码了一个路径,指示在哪里查找额外的工具和库。有关配置 FreeBASIC 的更多信息,请参阅 FreeBASIC 源代码的 src/compiler 目录中的 INSTALL 文本文件。

可以通过使用 -version 命令行选项调用 fbc 来检查您安装的 fbc 版本是"standalone"还是"prefixed"。

独立模式(Standalone)

如果 fbc 被配置为"standalone",它将相对于 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> 中,则使用它。
  • 在 Linux 上,如果在 prefix/bin/freebasic/<target> 或独立版本的 ./bin/<target> 中找不到该工具,fbc 会尝试直接调用它,因为它可能已安装在系统上并位于 PATH 中。

"<target>"指由 -target 选项指定的同名目标平台。

参见

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系