简介ARM特有的扩展编译器支持ARM编译器特有的一系列扩展,例如指令内在函数和其他内置函数。有关详细信息,请参阅第4章编译器特有的功能。语言遵从性1.3.2编译器有几种模式,在这些模式中,有的模式要求必须遵从源语言,有的模式则不做硬性规定Strict模式在strict模式下,编译器将强制遵从与源语言相关的语言标准。例如,编译严格C90时若使用//样式的注释,将导致错误。若要在strict模式下进行编译,请使用命令行选项--strict。GNU模式在GNU模式下,相关源语言的所有GNU编译器扩展都可用。例如,在GNU模式中源语言是C90、C99或非严格C++中的任何一种时,可以在switch语句中使用CaseRange源语言是C90或非严格C++时,可以使用C99样式的指定初始值设定项。若要在GNU模式下进行编译,请使用编译器选项--gnu。注意在非strict模式下时还可以使用某些GNU扩展。示例以下示例说明如何将源语言模式与语言遵从模式结合使用使用命令行选项.--strict编译.cpp文件时将编译标准C++使用命令行选项--gnu编译C源文件将编译GNU模式C90使用命令行选项--strict和--gnu编译.c文件会出错另请参阅第2-45页的--gnu第2-84页的--[no_]strict第3-25页的GNU语言扩展编译器用户指南中第2-11页的文件命名约定1-6ARMDUI0348AC版权所有2007ARMLimited。保留所有权利
简介 1-6 版权所有 © 2007 ARM Limited。保留所有权利。 ARM DUI 0348AC ARM 特有的扩展 编译器支持 ARM 编译器特有的一系列扩展,例如指令内在 函数和其他内置函数。有关详细信息,请参阅第 4 章 编译器 特有的功能。 1.3.2 语言遵从性 编译器有几种模式,在这些模式中,有的模式要求必须遵从源语言,有的模式则 不做硬性规定: Strict 模式 在 strict 模式下,编译器将强制遵从与源语言相关的语言标准。例 如,编译严格 C90 时若使用 // 样式的注释,将导致错误。 若要在 strict 模式下进行编译,请使用命令行选项 -strict。 GNU 模式 在 GNU 模式下,相关源语言的所有 GNU 编译器扩展都可用。例 如,在 GNU 模式中: • 源语言是 C90、C99 或非严格 C++ 中的任何一种时,可以在 switch 语句中使用 Case Range • 源语言是 C90 或非严格 C++ 时,可以使用 C99 样式的指定初 始值设定项。 若要在 GNU 模式下进行编译,请使用编译器选项 -gnu。 注意 在非 strict 模式下时还可以使用某些 GNU 扩展。 示例 以下示例说明如何将源语言模式与语言遵从模式结合使用: • 使用命令行选项 -strict 编译 .cpp 文件时将编译标准 C++ • 使用命令行选项 -gnu 编译 C 源文件将编译 GNU 模式 C90 • 使用命令行选项 -strict 和 -gnu 编译 .c 文件会出错 另请参阅 • 第2-45 页的- - gnu • 第2-84 页的- -[no_]strict • 第3-25 页的GNU 语言扩展 • 编译器用户指南中第2-11 页的文件命名约定
简介1.4C和C++库RVCT提供以下运行时C和C++库ARMC库ARMC库提供标准C函数以及C和C++库使用的辅助函数。C库还提供依赖于目标的函数,此类函数用于在半主机环境中实现标准C库函数,如printf。C库经过结构化,以便您可以在自已的代码中重新定义依赖于目标的函数来删除半主机相关性。ARM库符合《ARM体系结构的C库ABI》(CLIBABI)-《ARM体系结构的C++ABI》(CPPABI)。有关详细信息,请参阅库指南中第1-3页的用于实现ARM体系结构兼容性的ABI。RogueWave标准C++库2.02.03版由RogueWaveSoftware,Inc.提供的RogueWave标准C++库可提供标准C++函数和对象,如cout。这个库包含称为标准模板库(STL)的数据结构和算法。C++库使用C库来提供目标特定的支持。RogueWave标准C++库是在启用C++异常的情况下提供的。有关RogueWave库的详细信息,请参阅RogueWaveHTML文档,也可以访问RogueWave网站http://ww.roguewave.com支持库ARMC库提供其他组件以支持C++,以及为不同体系结构和处理器编译代码。C和C++库仅以二进制形式提供。对于主要构建选项的每一种组合,都有一个1990ISO标准C库的变体,例如目标系统的字节顺序、是否选中交互工作以及是否选中浮点支持。有关详细信息,请参阅库指南中的第2章C和C++库。1-7ARMDUI0348AC版权所有2007ARMLimited。保留所有权利
简介 ARM DUI 0348AC 版权所有 © 2007 ARM Limited。保留所有权利。 1-7 1.4 C 和 C++ 库 RVCT 提供以下运行时 C 和 C++ 库: ARM C 库 ARM C 库提供标准 C 函数以及 C 和 C++ 库使用的辅助函数。 C 库 还提供依赖于目标的函数,此类函数用于在半主机环境中实现标准 C 库函数,如 printf。 C 库经过结构化,以便您可以在自己的代码 中重新定义依赖于目标的函数来删除半主机相关性。 ARM 库符合: • 《ARM 体系结构的 C 库 ABI》 (CLIBABI) • 《ARM 体系结构的 C++ ABI》 (CPPABI)。 有关详细信息,请参阅库指南中第1-3 页的用于实现 ARM 体系结构 兼容性的 ABI。 Rogue Wave 标准 C++ 库 2.02.03 版 由 Rogue Wave Software, Inc. 提供的 Rogue Wave 标准 C++ 库可提供 标准 C++ 函数和对象,如 cout。这个库包含称为标准模板库 (STL) 的数据结构和算法。 C++ 库使用 C 库来提供目标特定的支持。 Rogue Wave 标准 C++ 库是在启用 C++ 异常的情况下提供的。 有关 Rogue Wave 库的详细信息,请参阅 Rogue Wave HTML 文档, 也可以访问 Rogue Wave 网站:http://www.roguewave.com 支持库 ARM C 库提供其他组件以支持 C++,以及为不同体系结构和处理 器编译代码。 C 和 C++ 库仅以二进制形式提供。对于主要构建选项的每一种组合,都有一个 1990 ISO 标准 C 库的变体,例如目标系统的字节顺序、是否选中交互工作以及是 否选中浮点支持。 有关详细信息,请参阅库指南中的第 2 章 C 和 C++ 库
简介1-8ARMDUI0348AC版权所有2007ARMLimited。保留所有权利
简介 1-8 版权所有 © 2007 ARM Limited。保留所有权利。 ARM DUI 0348AC
第2章编译器命令行选项本章列出了ARM编译器armcc所支持的命令行选项。它包括下面一节第2-2页的命令行选项ARMDUI0348AC2-1版权所有2007ARMLimited。保留所有权利
ARM DUI 0348AC 版权所有 © 2007 ARM Limited。保留所有权利。 2-1 第 2 章 编译器命令行选项 本章列出了 ARM 编译器 armcc 所支持的命令行选项。它包括下面一节: • 第2-2 页的命令行选项
编译器命令行选项2.1命令行选项本节按字母顺序列出了编译器所支持的命令行选项。2.1.1-Aopt此选项指定一些命令行选项,如果编译器在汇编.s输入文件或嵌入式汇编语言函数时调用这些命令行选项,它们将传递给汇编程序。语法-Aopt其中是要传递给汇编程序的命令行选项。opt注意有些编译器命令行选项只要由编译器调用,就会自动传递给汇编程序。例如,如果在编译器命令行中指定了--cpu选项,则在汇编.s文件或嵌入式汇编程序时只要调用了此选项,就会将此选项传递给汇编程序。若要查看编译器传递给汇编程序的编译器命令行选项,请使用编译器命令行选项-A--show_cmd7ine。示例armcc-A--predefine="NEWVERSIONSETL[TRUE)"main.c限制如果使用-A传递了不受支持的选项,则会生成错误。另请参阅第2-16页的--cpu=name.第2-53页的-Lopt第2-82页的--show_cmdline2-2ARMDUI0348AC版权所有2007ARMLimited。保留所有权利
编译器命令行选项 2-2 版权所有 © 2007 ARM Limited。保留所有权利。 ARM DUI 0348AC 2.1 命令行选项 本节按字母顺序列出了编译器所支持的命令行选项。 2.1.1 -Aopt 此选项指定一些命令行选项,如果编译器在汇编 .s 输入文件或嵌入式汇编语言 函数时调用这些命令行选项,它们将传递给汇编程序。 语法 -Aopt 其中: opt 是要传递给汇编程序的命令行选项。 注意 有些编译器命令行选项只要由编译器调用,就会自动传递给汇编程 序。例如,如果在编译器命令行中指定了 -cpu 选项,则在汇编 .s 文件或嵌入式汇编程序时只要调用了此选项,就会将此选项传递给 汇编程序。 若要查看编译器传递给汇编程序的编译器命令行选项,请使用编译 器命令行选项 -A-show_cmdline。 示例 armcc -A-predefine="NEWVERSION SETL {TRUE}" main.c 限制 如果使用 -A 传递了不受支持的选项,则会生成错误。 另请参阅 • 第2-16 页的- - cpu=name • 第2-53 页的- Lopt • 第2-82 页的- -show_cmdline