ZHCU876Z July 2001 – October 2023 SM320F28335-EP
选项控制编译器的运行。本部分说明选项约定和选项摘要表。此外,还提供常用选项(包括用于类型检查和汇编的选项)的详细说明。
如需查看选项的帮助屏幕摘要,请在命令行上输入不带参数的 cl2000。
下述原则适用于编译器选项:
可以使用 C2000_C_OPTION 环境变量为编译器定义默认选项。有关环境变量的详细说明,请参阅节 2.4.1。
表 2-1 到表 2-28 汇总了所有选项(包括链接选项)。使用表中的参考资料以获取更完整的选项说明。
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--silicon_version=28 | -v28 | 指定 TMS320C28x 架构。默认值(也是唯一接受的值)为 28。不再需要此选项。 | 节 2.3.4 |
--abi={coffabi|eabi} | 选择应用程序二进制接口。默认为 coffabi。也为eabi提供支持。 | 节 2.3.4 | |
--cla_support[=cla0|cla1|cla2] | 为类型 0、类型 1 或类型 2指定 TMS320C28x CLA 加速器支持。默认为 cla0。仅当目标硬件提供这一功能时才使用此选项。 | 节 2.3.4 | |
--float_support={ fpu32 | fpu64 | softlib } | 指定使用 TMS320C28x 32 位或 64 位硬件浮点支持。默认为 softlib。仅当目标硬件提供这一功能时才使用此选项。 | 节 2.3.4 | |
--idiv_support={none | idiv0} | 使用硬件扩展来支持快速整数除法,以提供一组指令来加速 16 位、32 位和 64 位值的整数除法。如果此硬件可用,请使用 --idiv_support=idiv0 来使用这些指令。仅当目标硬件提供这一功能时才使用此选项。默认为 none。(仅限 EABI) | 节 2.3.4 | |
--lfu_reference_elf=path | -lfu=path | 为了创建与实时固件更新 (LFU) 兼容的二进制可执行文件,请指定前一个 ELF二进制可执行文件的路径以用作参考,从中获取全局和静态符号的内存地址列表。这个先前的二进制文件可以是兼容 LFU 的二进制文件,但这不是必需的。(LFU仅支持 EABI) | 节 2.15 |
-lfu_default[=none | preserve] | 如果全局和静态符号地址在新的可执行文件中没有更新属性或保留属性,则指定参考 ELF 可执行文件中的全局和静态符号地址的默认处理方式。在实时固件更新(“热启动”)期间使用这些处理方式。 如果 --lfu_default=preserve(默认值),则编译器保留在参考 ELF 可执行文件中找到的所有全局和静态符号地址,除非为符号指定了 __attribute__((update))。 如果 --lfu_default=none,则编译器只保留指定了 __attribute__((preserve)) 的符号的地址。重新初始化指定了 __attribute__((update)) 的符号。链接器可以将所有其他全局和静态符号分配到任何内存地址,但不会在发生热启动时重新初始化这些符号。 (LFU仅支持EABI) |
节 2.15 | |
--silicon_errata_fpu1_workaround =on|off |
启用此选项可防止在某些指令期间可能发生的 FPU 寄存器写入冲突。编译器会在这类指令之前添加 NOP 指令以防止冲突。仅当目标硬件提供 FPU 功能时才使用此选项。 | 节 2.3.4 | |
--tmu_support[=tmu0 | tmu1] | 支持三角数学单元 (TMU) 。使用此选项还会支持FPU32 (与 --float_support=fpu32 一样)。如果使用此选项但未指定值,则默认值为 tmu0。tmu1 选项支持所有 tmu0 功能以及 LOG2F32 和 IEXP2F32 指令。仅当目标硬件提供这一功能时才使用此选项。(TMU1仅支持EABI) | 节 2.3.4 | |
--vcu_support[=vcu0|vcu2|vcrc] | 指定 C28x VCU 协处理器支持类型 0、类型 2 或 VCRC。仅当目标硬件提供这一功能时才使用此选项。默认为 vcu0。 | 节 2.3.4 | |
--unified_memory | -mt | 为统一内存模型生成代码。 | 节 2.3.4 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--opt_level=off | 禁用所有优化(默认值)。 | 节 3.1 | |
--opt_level=n | -On | 级别 0 (-O0) 仅优化寄存器使用情况。 级别 1 (-O1) 使用级别 0 优化并在本地进行优化。 级别 2 (-O2) 使用级别 1 优化并在本地进行优化。 级别 3 (-O3) 使用级别 2 优化并对文件进行优化。 级别 4 (-O4) 使用级别 3 优化并执行链接时间优化。 |
节 3.1、节 3.3、节 3.6 |
--opt_for_space=n | -ms | 在四个级别(0、1、2 和 3)上控制代码大小。 | 节 3.13 |
--opt_for_speed[=n] | -mf | 控制大小和速度之间的权衡(0-5 范围)。如果此选项未指定 n,则默认值为 4。如果未指定此选项,则默认设置为 2。 | 节 3.2 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--auto_inline=[size] | -oi | 设置自动内联大小(仅限 --opt_level=3)。如果未指定 size,则默认值为 1。 | 节 3.5 |
--call_assumptions=n | -opn | 级别 0 (-op0) 指定了模块包含从提供给编译器的源代码外部调用或修改的函数和变量。 级别 1 (-op1) 指定了模块包含从提供给编译器的源代码外部修改的变量,但不使用从源代码外部调用的函数。 级别 2 (-op2) 指定了模块不包含从提供给编译器的源代码外部调用或修改的函数或变量(默认值)。 级别 3 (-op3) 指定了模块包含从提供给编译器的源代码外部调用的函数,但不使用从源代码外部修改的变量。 |
节 3.4.1 |
--disable_inlining | 防止发生任何内联。 | 节 2.11 | |
--fp_mode={relaxed|strict} | 启用或禁用宽松浮点模式。 | 节 2.3.3 | |
--fp_reassoc={on|off} | 启用或禁用浮点算术的重新关联。 | 节 2.3.3 | |
--fp_single_precision_constant | 使所有未添加后缀的浮点常量都被视为单精度值(而非双精度常量)。 | 节 2.3.3 | |
--gen_opt_info=n | -onn | 级别 0 (-on0) 禁用优化信息文件。 级别 1 (-on2) 生成优化信息文件。 级别 2 (-on2) 生成详细的优化信息文件。 |
节 3.3.1 |
--isr_save_vcu_regs={on|off} | 为中断例程生成 VCU 寄存器保存/恢复到栈,以便 VCU 代码可以重入。 | 节 3.14 | |
--optimizer_interlist | -os | 交叉列出优化器注释与汇编语句。 | 节 3.10 |
--program_level_compile | -pm | 组合源文件以执行程序级优化。 | 节 3.4 |
--sat_reassoc={on|off} | 启用或禁用饱和算术的重新关联。默认为 --sat_reassoc=off。 | 节 2.3.3 | |
--aliased_variables | -ma | 通知编译器传递给函数的地址可能会由被调用函数中的别名修改。 | 节 3.9.2.2 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--symdebug:dwarf | -g | 默认行为。启用符号调试。调试信息的生成不会影响优化。因此,默认情况下会生成调试信息。 | 节 2.3.5 节 3.12 |
--symdebug:dwarf_version=2|3|4 | 指定 DWARF 格式版本。COFF ABI的默认版本为 3,EABI的默认版本为 4。 | 节 2.3.5 | |
--symdebug:none | 禁用所有符号调试。 | 节 2.3.5 节 3.12 |
|
--symdebug:profile_coff | 使用备用 STABS 调试格式启用分析。仅 COFF ABI 支持 STABS。 | 节 2.3.5 | |
--symdebug:skeletal | (已弃用;无效。) |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--include_path=directory | -I |
将指定的目录添加到 #include 搜索路径。 | 节 2.5.2.1 |
--preinclude=filename | 在编译开始时包含 filename。 | 节 2.3.3 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--compile_only | -c | 禁用链接(否定 --run_linker)。 | 节 4.1.3 |
--help | -h | 打印(在标准输出设备上)编译器理解的选项的说明。 | 节 2.3.2 |
--run_linker | -z | 导致从编译器命令行调用链接器。 | 节 2.3.2 |
--skip_assembler | -n | 编译 C/C++ 源文件,从而生成汇编语言输出文件。汇编器不会运行,也不会生成目标文件。 | 节 2.3.2 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--c89 | 根据 ISO C89 标准处理 C 文件。 | 节 6.14 | |
--c99 | 根据 ISO C99 标准处理 C 文件。 | 节 6.14 | |
--c11 | 根据 ISO C11 标准处理 C 文件。 | 节 6.14 | |
--c++03 | 根据 ISO C++03 标准处理 C++ 文件。 | 节 6.14 | |
--cla_background_task ={on|off} | 启用或禁用 CLA 后台任务。 | 节 10.1.1 | |
--cla_default | 将 .c 和 .cla 文件均作为 CLA 文件处理。 | 节 10.1.1 | |
--cla_signed_compare_workaround ={on|off} | 如果使用整数比较可能会导致错误的答案,故在编译CLA比较时自动使用浮点比较功能。默认为 off。 | 节 10.1.1 | |
--cpp_default | -fg | 将所有带有 C 扩展名的源文件作为 C++ 源文件处理。 | 节 2.3.7 |
--exceptions | 启用 C++ 异常处理。 | 节 6.6 | |
--extern_c_can_throw | 允许外部 C 函数传播异常。(仅限 EABI) | -- | |
--float_operations_allowed ={none|all|32|64} |
限制允许的浮点运算类型。 | 节 2.3.3 | |
--gen_cross_reference_listing | -px | 生成交叉引用列表文件 (.crl)。 | 节 2.9 |
--pending_instantiations=# | 指定在任何给定时间内可能正在进行的模板实例化的数量。使用 0 指定一个不受限制的数字。 | 节 2.3.4 | |
--printf_support={nofloat|full| minimal} |
支持更小、有限版本的 printf 函数系列(sprintf、fprintf 等)和 scanf 函数系列(sscanf、fscanf 等)运行时支持函数。 | 节 2.3.3 | |
--relaxed_ansi | -pr | 启用宽松模式;忽略严格的 ISO 违规。默认设置为 on。要禁用此模式,请使用 --strict_ansi 选项。 | 节 6.14.3 |
--rtti | -rtti | 启用 C++ 运行时类型信息 (RTTI)。 | –- |
--strict_ansi | -ps | 启用严格的 ANSI/ISO 模式(适用于 C/C++,不适用于 K&R C)。在此模式下,禁用与 ANSI/ISO C/C++ 冲突的语言扩展。在严格的 ANSI/ISO 模式下,大多数 ANSI/ISO 违规都会报告为错误。被视为酌情处理的违规行为可能会报告为警告。 | 节 6.14.3 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--preproc_dependency[=filename] | -ppd | 仅执行预处理,但不写入预处理的输出,而是写入适合于输入到标准 make 实用程序的依赖行列表。 | 节 2.5.8 |
--preproc_includes[=filename] | -ppi | 仅执行预处理,但不写入预处理的输出,而是写入 #include 指令中包含的文件列表。 | 节 2.5.9 |
--preproc_macros[=filename] | -ppm | 仅执行预处理。将预定义和用户定义的宏列表写入与输入同名但扩展名为 .pp 的文件。 | 节 2.5.10 |
--preproc_only | -ppo | 仅执行预处理。将预处理的输出写入与输入同名但扩展名为 .pp 的文件。 | 节 2.5.4 |
--preproc_with_comment | -ppc | 仅执行预处理。将预处理的输出(保留注释)写入与输入同名但扩展名为 .pp 的文件。 | 节 2.5.6 |
--preproc_with_compile | -ppa | 使用任何通常会禁用编译的 -pp<x> 选项在预处理后继续编译。 | 节 2.5.5 |
--preproc_with_line | -ppl | 仅执行预处理。将带有行控制信息(#line 指令)的预处理的输出写入与输入同名但扩展名为 .pp 的文件。 | 节 2.5.7 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--advice:performance[=all,none] | 为性能提高方法提供建议。默认为 all。 | 节 2.3.3 | |
--compiler_revision | 打印出编译器发布版本并退出。 | -- | |
--diag_error=num | -pdse | 将 num 标识的诊断分类为错误。 | 节 2.7.1 |
--diag_remark=num | -pdsr | 将 num 标识的诊断分类为备注。 | 节 2.7.1 |
--diag_suppress=num | -pds | 抑制 num 标识的诊断。 | 节 2.7.1 |
--diag_warning=num | -pdsw | 将 num 标识的诊断分类为警告。 | 节 2.7.1 |
--diag_wrap={on|off} | 使诊断消息换行(默认为 on)。请注意,此命令行选项不能在 Code Composer Studio IDE 中使用。 | ||
--display_error_number | -pden | 显示诊断的标识符及其文本。请注意,此命令行选项不能在 Code Composer Studio IDE 中使用。 | 节 2.7.1 |
--emit_warnings_as_errors | -pdew | 将警告视为错误。 | 节 2.7.1 |
--issue_remarks | -pdr | 发出备注(非严重警告)。 | 节 2.7.1 |
--no_warnings | -pdw | 抑制诊断警告(仍会发出错误)。 | 节 2.7.1 |
--quiet | -q | 抑制进度消息(静默)。 | -- |
--set_error_limit=num | -pdel | 将错误限制设置为 num。在在错误达到这个数量后,编译器放弃编译。(默认为 100。) | 节 2.7.1 |
--super_quiet | 超级静默模式。 | -- | |
--tool_version | -version | 显示每个工具的版本号。 | -- |
--verbose | 显示横幅和函数进度信息。 | -- | |
--verbose_diagnostics | -pdv | 提供详细的诊断消息,以自动换行的方式显示原始源代码。请注意,此命令行选项不能在 Code Composer Studio IDE 中使用。 | 节 2.7.1 |
--write_diagnostics_file | 生成诊断消息信息文件。编译器唯一选项。请注意,此命令行选项不能在 Code Composer Studio IDE 中使用。 | 节 2.7.1 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--gen_preprocessor_listing | -pl | 生成原始列表文件 (.rl)。 | 节 2.10 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--gen_data_subsections={on|off} | 将所有聚合数据(数组、结构和联合体)放入子段中。这使得链接器可以更好地控制在最终链接步骤期间删除未使用的数据。有关默认设置的详细信息,请参阅右侧的链接。 | 节 4.2.2 | |
--gen_func_subsections={on|off} | -mo | 将每个函数放在目标文件的一个单独子段中。如果未使用此选项,则默认为 off。有关默认设置的详细信息,请参阅右侧的链接。 | 节 4.2.1 |
--no_rpt | -mi | 禁止生成 RPT 指令。 | 节 2.3.4 |
--protect_volatile | -mv | 启用易失性引用保护。 | 节 2.3.4 |
--ramfunc={on|off} | 如果设置为 on,则指定所有函数都应放置在位于 RAM 中的 .TI.ramfunc 段中。 | 节 2.3.4 | |
--rpt_threshold=k | 生成迭代 k 次或更少次数的 RPT 循环。(k 是 0 到 256 之间的常数。) | 节 2.3.4 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--entry_hook[=name] | 启用入口挂钩。 | 节 2.14 | |
--entry_parm={none|name| address} |
将函数的参数指定给 --entry_hook 选项。 | 节 2.14 | |
--exit_hook[=name] | 启用出口挂钩。 | 节 2.14 | |
--exit_parm={none|name|address} | 将函数的参数指定给 --exit_hook 选项。 | 节 2.14 | |
--remove_hooks_when_inlining | 删除自动内联函数的入口/出口挂钩。 | 节 2.14 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--analyze=codecov | 从配置文件数据生成分析信息。 | 节 3.8.2.2 | |
--analyze_only | 仅生成分析。 | 节 3.8.2.2 | |
--gen_profile_info | 生成检测代码以收集配置文件信息。 | 节 3.7.1.3 | |
--use_profile_info=file1[, file2,...] | 指定配置文件信息文件。 | 节 3.7.1.3 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--keep_asm | -k | 保留汇编语言 (.asm) 文件。 | 节 2.3.11 |
--asm_listing | -al | 生成汇编列表文件。 | 节 2.3.11 |
--c_src_interlist | -ss | 交叉列出 C 源代码和汇编语句。 | 节 2.12 节 3.10 |
--src_interlist | -s | 交叉列出优化器注释(如果可用)和汇编源语句;否则交叉列出 C 语言和汇编源语句。 | 节 2.3.2 |
--absolute_listing | -aa | 启用绝对列表。 | 节 2.3.11 |
--asm_cross_reference_listing | -ax | 生成交叉引用文件。 | 节 2.3.11 |
--asm_define=name[=def] | -ad | 设置 name 符号。 | 节 2.3.11 |
--asm_dependency | -apd | 执行预处理;仅列出程序集依赖项。 | 节 2.3.11 |
--asm_includes | -api | 执行预处理;仅列出包含的 #include 文件。 | 节 2.3.11 |
--issue_remarks | 发出包含附加汇编时间检查的备注(非严重警告)。 | 节 2.3.11 | |
--asm_undefine=name | -au | 不对预定义的常量 name进行定义。 | 节 2.3.11 |
--flash_prefetch_warn | 汇编器警告F281X BF 闪存预取问题。 | 节 2.3.11 | |
--include_file=filename | -ahi | 包含汇编模块的指定文件。 | 节 2.3.11 |
--preproc_asm | -mx | 预处理汇编源,扩展汇编宏。 | 节 2.3.11 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--asm_file=filename | -fa | 不管其扩展名为何,都将 filename 标识为汇编源文件。默认情况下,编译器和汇编器将 .asm 文件视为汇编源文件。 | 节 2.3.7 |
--c_file=filename | -fc | 不管其扩展名为何,都将 filename 标识为 C 源文件。默认情况下,编译器将 .c 文件视为 C 源文件。 | 节 2.3.7 |
--cpp_file=filename | -fp | 不管其扩展名为何,都将 filename 标识为 C++ 文件。默认情况下,编译器将 .C、.cpp、.cc 和 .cxx 文件视为 C++ 文件。 | 节 2.3.7 |
--obj_file=filename | -fo | 不管其扩展名为何,都将 filename 标识为目标代码文件。默认情况下,编译器和链接器将 .obj 文件视为目标代码文件,包括 *.c.obj 和 *.cpp.obj 文件。 | 节 2.3.7 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--abs_directory=directory | -fb | 指定绝对列表文件目录。默认情况下,编译器使用目标文件目录。 | 节 2.3.10 |
--asm_directory=directory | -fs | 指定汇编文件目录。默认情况下,编译器使用当前目录。 | 节 2.3.10 |
--list_directory=directory | -ff | 指定汇编列表文件和交叉引用列表文件目录。默认情况下,编译器使用目标文件目录。 | 节 2.3.10 |
--obj_directory=directory | -fr | 指定目标文件目录。默认情况下,编译器使用当前目录。 | 节 2.3.10 |
--output_file=filename | -fe | 指定编译输出文件名;可以覆盖 --obj_directory。 | 节 2.3.10 |
--pp_directory=dir | 指定预处理器文件目录。默认情况下,编译器使用当前目录。 | 节 2.3.10 | |
--temp_directory=directory | -ft | 指定临时文件目录。默认情况下,编译器使用当前目录。 | 节 2.3.10 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--asm_extension=[.]extension | -ea | 设置汇编源文件的默认扩展名。 | 节 2.3.9 |
--c_extension=[.]extension | -ec | 设置 C 源文件的默认扩展名。 | 节 2.3.9 |
--cpp_extension=[.]extension | -ep | 设置 C++ 源文件的默认扩展名。 | 节 2.3.9 |
--listing_extension=[.]extension | -es | 设置列表文件的默认扩展名。 | 节 2.3.9 |
--obj_extension=[.]extension | -eo | 设置目标文件的默认扩展名。 | 节 2.3.9 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--cmd_file=filename | -@ | 将文件内容解释为命令行的扩展。可以使用多个 -@ 实例。 | 节 2.3.2 |