我有时会被问到编译器是否兼容的问题,从这个意义上讲,您可以使用第一个编译器构建一个库,然后将其链接到使用第二个编译器构建的项目中(即二进制兼容)。过去,这些问题大多涉及 Arm Compiler for Embedded(AC6)与其前身 AC5 或 Arm GNU Toolchain GCC 的兼容性。随着下一代 Arm 嵌入式编译器(Arm Toolchain for Embedded,简称 ATfE)的即将推出,这些问题的焦点正转向 AC6 与 ATfE 之间的兼容性。因此,现在是刷新这一主题并提供一些指导的好时机。
在开始之前,有几件事需要注意。首先,在这篇博文中,我将使用 “工具链 ”而不是 “编译器”。这是因为我想强调,AC6、GCC、ATFE 和其他工具远不止是一个编译器。它们是完整的编译工具链,除编译器外,还包括汇编器、链接器、二进制实用程序和库。稍后我们将看到,这对二进制兼容性非常重要。在我使用 “编译器 ”一词的地方,我特指编译器组件,而不是整个工具链。
其次,我这里说的是 C 代码,而不是 C++。C++ 给二进制兼容性带来了自身的挑战,使得兼容性更难实现。另外,我说的是 “嵌入式裸机 ”代码,即不涉及操作系统。
作者:Paul Black
文章来源:https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/binary-interoperability-between-compilers
欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区 Arm 技术专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。