Arm 源和目标具有不同的EABI版本

Arm 源和目标具有不同的EABI版本,arm,toolchain,eabi,Arm,Toolchain,Eabi,我正在尝试使用ARM工具链编译一个.so文件。然而,我不断得到这个错误- 错误:源对象具有EABI版本0,但目标对象具有EABI版本5 我不能改变工具链中的任何东西,因为我必须使用给定的工具链。我以前从未见过这种错误 我使用了这个编译器标志- -Wl,--无警告不匹配 但是我不得不把它拿出来,因为它打碎了很多其他东西 我使用的编译器标志是: -fPIC-O2-marm-march=armv7-a使用as-meabi=5 我不会说我完全理解它…:-)但它解决了问题 我试图做的事情失败了: 使用G

我正在尝试使用ARM工具链编译一个.so文件。然而,我不断得到这个错误-

错误:源对象具有EABI版本0,但目标对象具有EABI版本5

我不能改变工具链中的任何东西,因为我必须使用给定的工具链。我以前从未见过这种错误

我使用了这个编译器标志-
-Wl,--无警告不匹配

但是我不得不把它拿出来,因为它打碎了很多其他东西

我使用的编译器标志是:

-fPIC-O2-marm-march=armv7-a
使用
as-meabi=5

我不会说我完全理解它…:-)但它解决了问题

我试图做的事情失败了:

  • 使用GNU进行组装,如在4de5434b694fc260d02610e8e7fec21b2923600a处从主机编译的,配置有
    --目标arm elf
  • 链接Ubuntu 16.04
    arm linux gnueabihf gcc
    5.3.1版
我认为EABI规范中提到的值说明了一些相关内容

表4-2,特定于ARM的e_标志

这会屏蔽一个8位版本号,该版本号是此 ELF文件符合。这个ABI是版本5。值为0表示未知 一致性


虽然我根本不知道为什么会出现0。

你没有说哪个工具链或目标操作系统?对于GCC,您有
-mabi=name
,其中name是apcs gnu、atpcs、aapcs、aapcs linux或iwmmxt中的一个。虽然听起来您可能没有ELF文件或其他文件。尝试
file test.o
查看您在编译阶段创建的文件类型。我认为aapcs是最新的版本(至少它不是零版本)。谷歌搜索一下可能会有所帮助。是的,闻起来确实像是你试图将OABI和EABI对象链接在一起(刚刚尝试过,它肯定会产生完全相同的错误)。对此该怎么办主要取决于你没有包括在问题中的所有细节。。。