news 2026/5/31 6:00:00

ARM Compiler 6.00 update 1版本解析与使用指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ARM Compiler 6.00 update 1版本解析与使用指南

1. ARM Compiler 6.00 update 1 (build 21) 版本概述

ARM Compiler 6.00 update 1 (build 21) 是ARM公司于2014年5月29日发布的一个更新版本。这个版本主要针对ARMv8架构提供了编译支持,能够为AArch32和AArch64的裸机应用构建可执行二进制文件。需要注意的是,这已经是一个过时的版本(legacy release),不再建议用于新的开发项目。

重要提示:这个版本没有通过安全相关开发的认证。如果你的项目有长期维护或功能安全要求,建议使用Arm Compiler for Embedded FuSa而不是这个版本。

2. 支持架构与处理器

2.1 支持级别说明

ARM Compiler 6.00 update 1对不同的ARM架构和处理器提供了不同级别的支持:

架构/处理器支持级别建议
ARMv8-A, Cortex-A53, Cortex-A57完全支持(Production quality)可直接使用
ARMv7-A及衍生处理器Alpha级别(不完整实现)暂时使用ARM Compiler 5
ARMv7-R, ARMv7-M, ARMv6-M及衍生处理器不支持使用ARM Compiler 5
ARMv6-M之前的架构不支持使用ARM Compiler 5
非ARM架构不支持不适用

2.2 支持级别定义

  • 完全支持(Supported):生产质量,最高支持优先级
  • Beta:实现完整但未充分测试,欢迎用户反馈
  • Alpha:实现不完整且未充分测试,欢迎用户反馈
  • 不支持(Unsupported):功能不存在或已弃用,完全未经测试

3. 新特性与变化

3.1 编译器更新

armclang作为armcc的继任者,基于LLVM技术构建。它最初支持ARMv8架构,并计划在未来版本中扩展支持其他ARM架构。从旧版本迁移时,请参考产品文档中的"Migration and Compatibility Guide (DUI0742A)"。

3.2 工具链组件

armlink、armasm、fromelf和armar等工具已扩展支持ARMv8,行为与之前版本的ARM Compiler类似,但可能不是完全功能完备。

关于汇编器的注意事项:ARM Compiler 6默认采用LLVM集成汇编器,因为它更接近GNU汇编器语法,提高了GNU和ARM Compiler工具链之间的可移植性。

3.3 嵌入式C/C++库

标准ARM Compiler嵌入式库已扩展支持ARMv8,行为与之前版本类似,但可能不是完全功能完备。

4. 安装指南

4.1 系统要求

ARM Compiler 6.00支持以下主机平台:

  • Linux:

    • Red Hat Enterprise Linux 5 64-bit
    • Red Hat Enterprise Linux 6 64-bit
    • Ubuntu Desktop Edition 12.04 LTS 64-bit
  • Windows:

    • Windows 7 64-bit
    • Windows 8 64-bit
    • Windows 2012 Server 64-bit

4.2 Linux安装步骤

  1. 运行install_x86_64.sh(不要使用source命令)
  2. 按照屏幕提示操作
  3. 建议删除之前版本的ARM Compiler 6
  4. 或者安装到不同目录

依赖项

  • armclang二进制文件动态链接到libstdc++
  • 需要安装32位兼容库:
    • Red Hat:yum install glibc.i686
    • Ubuntu:apt‑get install ia32‑libs

4.3 Windows安装步骤

  1. 运行setup.exe
  2. 按照屏幕提示操作
  3. 如果已安装旧版本,会执行升级

4.4 安装后配置

ARM Compiler 6.00是许可证管理产品。需要设置ARMLMD_LICENSE_FILE环境变量指向许可证文件。

Windows注意:路径不能包含双引号,即使路径中有空格也不需要引号。

5. 使用示例

5.1 编译简单程序

为裸机AArch64系统编译一个简单程序:

echo "int main() {}" > simple.c armclang simple.c -o simple

armclang接受与Clang编译器相同的选项。更多信息请参考Clang用户手册。

6. 文档资源

ARM Compiler 6.00提供以下文档:

  1. Getting Started Guide (DUI0741A)
  2. Migration and Compatibility Guide (DUI0742A)
  3. Software Development Guide (DUI0773A)
  4. armclang Reference Guide (DUI0774A)
  5. armasm User Guide (DUI0801A)
  6. armlink User Guide (DUI0803A)
  7. ARM C and C++ Libraries and Floating-Point Support User Guide (DUI0808A)
  8. armar User Guide (DUI0806A)
  9. fromelf User Guide (DUI0805A)
  10. armasm Reference Guide (DUI0802A)
  11. armlink Reference Guide (DUI0804A)
  12. ARM C and C++ Libraries and Floating-Point Support Reference Guide (DUI0809A)
  13. Errors and Warnings Reference Guide (DUI0807A)

更多信息请访问ARM信息中心。

7. 已知问题与限制

7.1 通用问题

  • 工具链尚未进行性能调优
  • 不支持大端数据 [SDWYV-540]

7.2 C++相关问题

  • 不支持C++异常,必须使用-fno-exceptions选项编译 [SDWYV-848]

7.3 调试与DWARF支持

  • fromelf不支持包含DWARF4调试数据的映像 [SDWYV-1151, SDWYV-902, SDWYV-903]
  • 使用-g选项汇编时,只为.text段生成调试信息 [LLVM-1244]

7.4 链接问题

  • 链接器警告L6412W频繁出现 [SDWYV-930]
  • 必须使用--force_scanlib选项链接ARM库 [SDWYV-597]
  • 不支持AArch64的ELF R_MOVW_PREL组重定位287-293 [SDCOMP-23520]
  • Cortex-A53/A57对象文件链接问题 [SDWYV-1479]

7.5 过程调用标准ABI问题

  • 某些浮点聚合参数处理不符合标准 [SDWYV-1962]
  • 8字节对齐参数问题 [SDWYV-1964]
  • AArch64不支持long double [SDWYV-678]
  • 内联函数调用问题 [SDWYV-729]

7.6 ARMv7-A Alpha支持问题

  • Cortex-A5对象文件链接问题 [SDWYV-1468]
  • Cortex-A7对象文件链接问题 [SDWYV-1487]
  • 不支持--cpu=cortex-a12目标选择 [SDWYV-1467]

8. 反馈与支持

欢迎通过ARM开发者网站提交bug报告和改进建议。报告问题时请提供:

  • 工具版本和构建号
  • 重现问题所需的源代码、文件和相关命令行
  • 详细的错误描述

9. 版本更新内容

自6.00版本以来修复的问题:

  • 修复了C++程序构建失败问题(SDWYV-2279)

10. 实际使用建议

基于这个版本的特点和限制,我有以下使用建议:

  1. 新项目选择:除非有特殊原因,否则不建议使用这个过时版本。考虑使用更新的ARM Compiler版本。

  2. ARMv8开发:如果必须使用这个版本进行ARMv8开发,建议:

    • 仔细测试所有关键功能
    • 记录所有遇到的限制和问题
    • 制定升级到新版本的计划
  3. 调试技巧

    • 对于调试问题,可以尝试减少优化级别
    • 复杂的调试场景可能需要结合DS-5工具链
  4. 性能考量

    • 这个版本未进行性能调优,关键性能路径需要特别测试
    • 考虑手动优化关键代码段
  5. 迁移准备

    • 如果从旧版本迁移,预留充足时间进行兼容性测试
    • 建立完整的回归测试套件

这个版本虽然提供了ARMv8支持,但由于其过时状态和诸多限制,建议仅用于特定场景或短期项目。长期项目应考虑使用ARM官方推荐的最新稳定版本。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 5:56:57

云边端协同与智能算法:如何用代码重塑城市停车体验

1. 项目概述:当停车遇上代码,一场静默的效率革命 如果你最近开车去市中心,可能已经发现了一些微妙的变化:那些曾经让你兜兜转转十几分钟也找不到一个空位的停车场,现在入口处的电子屏上清晰地显示着“剩余车位&#xf…

作者头像 李华
网站建设 2026/5/31 5:53:32

[智能体-165]:python字典格式与JSON格式的转化

Python 内置 json 标准库实现转换,字典是内存数据结构,JSON 是字符串格式,二者本质不同。一、核心方法功能函数说明字典 → JSON 字符串json.dumps()序列化JSON 字符串 → 字典json.loads()反序列化字典写入 JSON 文件json.dump()写入文件读取…

作者头像 李华
网站建设 2026/5/31 5:50:59

告别PuTTY和Xshell!这个免费全能终端MobaXterm,我用了就回不去了

全能终端MobaXterm:运维工程师的效率革命 第一次在同事的屏幕上看到MobaXterm时,我正手忙脚乱地在PuTTY、WinSCP和RDP客户端之间切换。他轻松地在一个窗口里完成了SSH登录、文件传输和远程桌面操作,而我面前的五个窗口已经挤满了任务栏。那一…

作者头像 李华