使用一种编译器创建的静态 c 库是不是与另一种兼容?
Posted
技术标签:
【中文标题】使用一种编译器创建的静态 c 库是不是与另一种兼容?【英文标题】:Are static c libraries created with one compiler compatible with another?使用一种编译器创建的静态 c 库是否与另一种兼容? 【发布时间】:2013-10-15 11:28:00 【问题描述】:在我的例子中,我有一个使用代码 sourcery gcc 构建的库,针对 arm cortex-m4。然后我试图将该库链接到使用 IAR 编译器编译的项目中。
是否可以这样做,还是必须使用新工具重建库?哪些因素会影响这一点?
【问题讨论】:
【参考方案1】:静态库是几个目标文件的捆绑包,这些文件总是特定于编译器的。因此,如果您尝试将基于 gcc
的库与 IAR
编译器链接,由于要链接的目标文件格式不匹配,您将在编译时出错。
您需要使用 IAR 重建您的库。
【讨论】:
@Brandon Yates 请检查 Lindydancer 给出的答案,并让我们知道它是否有效。我没有可用的所有资源进行交叉检查,否则我会在最后完成。他提供的技术对我来说是全新的,所以我非常有兴趣知道这是否可能..提前谢谢。【参考方案2】:用于 ARM 的 IAR 编译器支持 AEABI 格式,允许您使用一个编译器编译文件并与另一个编译器链接。
如果您使用 GCC 构建了库并启用了 AEABE,则应该可以在使用 IAR 工具的项目构建中使用静态库。
【讨论】:
以上是关于使用一种编译器创建的静态 c 库是不是与另一种兼容?的主要内容,如果未能解决你的问题,请参考以下文章