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

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 5ARMv7-R, ARMv7-M, ARMv6-M及衍生处理器不支持使用ARM Compiler 5ARMv6-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-bitRed Hat Enterprise Linux 6 64-bitUbuntu Desktop Edition 12.04 LTS 64-bitWindows:Windows 7 64-bitWindows 8 64-bitWindows 2012 Server 64-bit4.2 Linux安装步骤运行install_x86_64.sh(不要使用source命令)按照屏幕提示操作建议删除之前版本的ARM Compiler 6或者安装到不同目录依赖项armclang二进制文件动态链接到libstdc需要安装32位兼容库Red Hat:yum install glibc.i686Ubuntu:apt‑get install ia32‑libs4.3 Windows安装步骤运行setup.exe按照屏幕提示操作如果已安装旧版本会执行升级4.4 安装后配置ARM Compiler 6.00是许可证管理产品。需要设置ARMLMD_LICENSE_FILE环境变量指向许可证文件。Windows注意路径不能包含双引号即使路径中有空格也不需要引号。5. 使用示例5.1 编译简单程序为裸机AArch64系统编译一个简单程序echo int main() {} simple.c armclang simple.c -o simplearmclang接受与Clang编译器相同的选项。更多信息请参考Clang用户手册。6. 文档资源ARM Compiler 6.00提供以下文档Getting Started Guide (DUI0741A)Migration and Compatibility Guide (DUI0742A)Software Development Guide (DUI0773A)armclang Reference Guide (DUI0774A)armasm User Guide (DUI0801A)armlink User Guide (DUI0803A)ARM C and C Libraries and Floating-Point Support User Guide (DUI0808A)armar User Guide (DUI0806A)fromelf User Guide (DUI0805A)armasm Reference Guide (DUI0802A)armlink Reference Guide (DUI0804A)ARM C and C Libraries and Floating-Point Support Reference Guide (DUI0809A)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]不支持--cpucortex-a12目标选择 [SDWYV-1467]8. 反馈与支持欢迎通过ARM开发者网站提交bug报告和改进建议。报告问题时请提供工具版本和构建号重现问题所需的源代码、文件和相关命令行详细的错误描述9. 版本更新内容自6.00版本以来修复的问题修复了C程序构建失败问题(SDWYV-2279)10. 实际使用建议基于这个版本的特点和限制我有以下使用建议新项目选择除非有特殊原因否则不建议使用这个过时版本。考虑使用更新的ARM Compiler版本。ARMv8开发如果必须使用这个版本进行ARMv8开发建议仔细测试所有关键功能记录所有遇到的限制和问题制定升级到新版本的计划调试技巧对于调试问题可以尝试减少优化级别复杂的调试场景可能需要结合DS-5工具链性能考量这个版本未进行性能调优关键性能路径需要特别测试考虑手动优化关键代码段迁移准备如果从旧版本迁移预留充足时间进行兼容性测试建立完整的回归测试套件这个版本虽然提供了ARMv8支持但由于其过时状态和诸多限制建议仅用于特定场景或短期项目。长期项目应考虑使用ARM官方推荐的最新稳定版本。