fbc 命令行
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=CompilerCmdLine
- 最后更新: 2025-04-07
使用 fbc 命令行。
FreeBASIC 官方发行版附带了 fbc,这是 FreeBASIC 的主力编译器。fbc 是一个命令行编译器,可以从控制台启动——DOS 命令提示符、Windows 命令提示符或 Linux shell 均可。不带任何参数运行 fbc 时,会显示可用选项或命令行开关的列表,可以用来调整编译器的行为。
最简单的情况下,fbc 接受一个源文件作为命令行参数并生成可执行文件。它的工作方式是:先将源文件(.bas)编译为汇编文件(.asm),再用 GAS 将其编译为目标文件(.o),最后用 LD 将该目标文件与它所需的其他目标文件和库链接,生成最终可执行文件。汇编文件和编译后的目标文件默认在此时会被删除。例如,以下命令:
fbc foo.bas在 DOS 和 Windows 下生成可执行文件 foo.exe,在 Linux 下生成 ./foo。fbc 可以同时接受多个源文件,将它们全部编译并链接成一个可执行文件。例如,以下命令:
fbc foo.bas bar.bas baz.bas在 DOS 和 Windows 下生成可执行文件 foo.exe,在 Linux 下生成 ./foo。由于 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 [ options ] [ input_list ]其中 input_list 是文件名列表。支持的文件类型如下:
| 文件扩展名 | 描述 |
|---|---|
| .bas | FreeBASIC 源文件 |
| .a | 库文件 |
| .o | 目标文件 |
| .rc | 资源脚本(仅 Windows) |
| .res | 已编译资源(仅 Windows) |
| .xpm | X 图标位图(仅 Linux) |
源代码
将源文件添加到编译列表
添加搜索包含文件的路径
在每个编译的源文件中包含一个头文件
添加预处理器定义
选择语言模式:fb、fblite、qb、deprecated
选择语言模式:fb、fblite、qb、deprecated(覆盖代码中的语句)
代码生成
设置交叉编译的目标平台
设置编译器后端(x86 默认为 'gas',x86_64 默认为 'gcc')
设置 Asm 块的汇编格式
设置目标架构
设置优化级别(-gen gcc)
设置编译器启用的向量优化级别(默认:0)
设置浮点运算单元(默认:X87)
选择快速或精确浮点运算(默认:PRECISE)
设置杂项或实验性选项
生成位置无关代码(非 x86 Unix 共享库)
编译
定义主文件(不含扩展名),即入口点(默认为命令行上的第一个 .bas 文件)
覆盖隐式用户主函数的公开导出名称
添加调试信息
通过选择特定的性能分析器来启用函数性能分析
为 gmon/gprof 启用函数性能分析
添加错误检查
添加带 RESUME 支持的错误检查
与 -ex 相同,另加数组边界和维度、空指针及错误位置报告
启用栈展开信息
向 GAS 传递选项(以逗号分隔)
向 GCC 传递选项(以逗号分隔)
设置目标文件路径/名称(必须在 .bas 文件之后传递)
启用数组边界检查
启用数组维度检查
启用 assert() 和 assertwarn() 检查
启用 __FB_DEBUG__
添加调试信息
启用完整的错误位置报告
启用空指针检查
链接
将目标文件添加到链接器列表
将库文件添加到链接器列表
添加搜索库的路径
链接线程安全的运行时库
不包含默认库
不包含指定的库
链接时优先使用静态库而非动态库
将链接映射保存到文件名
向 LD 传递选项(以逗号分隔)
导出用于动态链接的符号
创建静态库
创建 DLL,包括导入库
创建 DLL,包括导入库(与 -dylib 相同)
设置可执行文件/库的路径/名称
不从输出文件中剥离符号信息
从输出文件中省略所有符号信息
告知链接器在哪里查找库(某些工具链需要此选项)
行为
设置编译器前缀路径
设置内部 buildprefix 选项
在命令行显示编译器版本,不编译或链接
显示详细输出
显示特定信息(fblibdir、host、target、x)
只输出预处理后的输入文件,不编译
只编译为中间文件,不汇编或链接
只编译为汇编文件,不汇编或链接
只编译和汇编源文件,不链接
不删除中间文件
不删除汇编文件
不删除目标文件
设置最低警告级别:all、none、param、escape、pedantic、next、funcptr、constness、suffix、error、upcast 或一个数值
仅在发生 <val> 个错误后停止解析
不显示错误发生处的源代码行
不从 .o 和 .a 文件读取/写入编译时信息
显示 #included 文件的文件名树
平台相关
设置子系统(gui、console)
设置栈大小(以 KB 为单位,默认:1 MB 或 2 MB)
元选项
从文件中读取(附加)命令行选项
示例
fbc myfile.bas(使用 DOS 版 FBC,编译并链接 DOS 可执行文件 MYFILE.EXE。)
fbc -s gui myfile.bas(使用 Windows 版 FBC,编译并链接 Windows 可执行文件 myfile.exe。运行程序时不会显示控制台窗口("MS-DOS 提示符"))
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)
注意:如何在 FB 可执行程序中包含图标
有一个简单的命令行选项可以将 FB 程序编译为带图标的可执行文件:
- 创建一个 *.rc 文件,例如 appicon.rc,内容如下:
FB_PROGRAM_ICON ICON "appicon.ico"
(其中 appicon.ico 是图标的名称)
- 然后在编译程序时,将 appicon.rc 添加到要编译的文件列表中。
参见
返回 目录