Skip to content

fbc 命令行


使用 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 是文件名列表。支持的文件类型如下:

文件扩展名描述
.basFreeBASIC 源文件
.a库文件
.o目标文件
.rc资源脚本(仅 Windows)
.res已编译资源(仅 Windows)
.xpmX 图标位图(仅 Linux)

源代码

-b < name >

将源文件添加到编译列表

-i < name >

添加搜索包含文件的路径

-include < name >

在每个编译的源文件中包含一个头文件

-d < name=val >

添加预处理器定义

-lang < name >

选择语言模式:fbfbliteqbdeprecated

-forcelang < name >

选择语言模式:fbfbliteqbdeprecated(覆盖代码中的语句)

代码生成

-target < platform >

设置交叉编译的目标平台

-gen < backend >

设置编译器后端(x86 默认为 'gas',x86_64 默认为 'gcc')

-asm < format >

设置 Asm 块的汇编格式

-arch < type >

设置目标架构

-O < level >

设置优化级别(-gen gcc)

-vec < level >

设置编译器启用的向量优化级别(默认:0

-fpu < type >

设置浮点运算单元(默认:X87

-fpmode < type >

选择快速或精确浮点运算(默认:PRECISE

-z < value >

设置杂项或实验性选项

-pic

生成位置无关代码(非 x86 Unix 共享库)

编译

-m < name >

定义主文件(不含扩展名),即入口点(默认为命令行上的第一个 .bas 文件)

-entry < name >

覆盖隐式用户主函数的公开导出名称

-g

添加调试信息

-profgen < profiler >

通过选择特定的性能分析器来启用函数性能分析

-profile

为 gmon/gprof 启用函数性能分析

-e

添加错误检查

-ex

添加带 RESUME 支持的错误检查

-exx

-ex 相同,另加数组边界和维度、空指针及错误位置报告

-eunwind

启用栈展开信息

-Wa < opt >

向 GAS 传递选项(以逗号分隔)

-Wc < opt >

向 GCC 传递选项(以逗号分隔)

-o < name >

设置目标文件路径/名称(必须在 .bas 文件之后传递)

-earray

启用数组边界检查

-earraydims

启用数组维度检查

-eassert

启用 assert() 和 assertwarn() 检查

-edebug

启用 __FB_DEBUG__

-edebuginfo

添加调试信息

-elocation

启用完整的错误位置报告

-enullptr

启用空指针检查

链接

-a < name >

将目标文件添加到链接器列表

-l < name >

将库文件添加到链接器列表

-p < name >

添加搜索库的路径

-mt

链接线程安全的运行时库

-nodeflibs

不包含默认库

-nolib < name(s) >

不包含指定的库

-static

链接时优先使用静态库而非动态库

-map < name >

将链接映射保存到文件名

-Wl < opt >

向 LD 传递选项(以逗号分隔)

-export

导出用于动态链接的符号

-lib

创建静态库

-dylib

创建 DLL,包括导入库

-dll

创建 DLL,包括导入库(与 -dylib 相同)

-x < name >

设置可执行文件/库的路径/名称

-nostrip

不从输出文件中剥离符号信息

-strip

从输出文件中省略所有符号信息

-sysroot < path >

告知链接器在哪里查找库(某些工具链需要此选项)

行为

-prefix < path >

设置编译器前缀路径

-buildprefix < name >

设置内部 buildprefix 选项

-version

在命令行显示编译器版本,不编译或链接

-v

显示详细输出

-print < option >

显示特定信息(fblibdirhosttargetx

-pp

只输出预处理后的输入文件,不编译

-r

只编译为中间文件,不汇编或链接

-rr

只编译为汇编文件,不汇编或链接

-c

只编译和汇编源文件,不链接

-R

不删除中间文件

-RR

不删除汇编文件

-C

不删除目标文件

-w < value >

设置最低警告级别:allnoneparamescapepedanticnextfuncptrconstnesssuffixerrorupcast 或一个数值

-maxerr < val >

仅在发生 <val> 个错误后停止解析

-noerrline

不显示错误发生处的源代码行

-noobjinfo

不从 .o 和 .a 文件读取/写入编译时信息

-showincludes

显示 #included 文件的文件名树

平台相关

-s < name >

设置子系统(guiconsole

-t < value >

设置栈大小(以 KB 为单位,默认:1 MB 或 2 MB)

元选项

@< file >

从文件中读取(附加)命令行选项

示例

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 添加到要编译的文件列表中。

参见

返回 目录

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