-3

项目芯片:nordic nrf51822 256KB NRF51 SDK 版本:6.1

由于许可证问题,我正在将我的项目从 windows keil 转换为 OSX GNU。

在我之前的项目中,keil-arm 编译器制作了一些 .o 文件。而且我没有那些c文件。

我尝试编译项目,当它尝试链接这些 .o 文件时,它会像这样错误退出。

gcc 不能用 keil-arm 编译器编译的目标文件编译?

/usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm- none-eabi/bin/ld: Dwarf Error: found dwarf version '0',这个阅读器只处理版本 2、3 和 4 的信息。....\RedCarrot_ver2(c)\afe4403.c:(.text+0x0): 未定义引用 _printf_d' /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/ gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: Dwarf Error: found dwarf version '11822', 这个阅读器只处理版本 2 , 3 和 4 信息。....\RedCarrot_ver2(c)\afe4403.c:(.text+0x0): undefined reference to_printf_int_dec' /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc /arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: Dwarf Error: found dwarf version '23598', 这个阅读器只处理版本 2, 3和4信息。afe4403.o:在功能心跳':..

4

2 回答 2

0

简短回答:不,GCC 不能可靠地使用 Keil 生成的 .o 或 .a 文件。

虽然它们可能使用 ABI(arm 二进制接口),但 GCC 和 Keil 几乎可以肯定依赖于不同的 libc 实现,并且可以引用其他工具链不提供的函数。此外,调试信息可能不兼容(请参阅与 DWARF 相关的文本墙中的错误)。最后,虽然 ELF 是一种标准格式,但 ELF 文件中的很多内容和元数据不一定是标准的,并且每个工具链的处理方式都略有不同。

不幸的是,最好将所有文件编译到一个工具链中。

于 2015-09-25T02:24:18.200 回答
0

我想报告这是可能的!我已经这样做了,它有效!不过,您需要使用正确的标志来使用 GCC 进行编译。

于 2016-10-03T16:42:23.350 回答