2

我正在尝试使用 ARM 工具链编译 .so 文件。但是我不断收到此错误-

错误:源对象的 EABI 版本为 0,但目标对象的 EABI 版本为 5

我无法更改工具链中的任何内容,因为我必须使用给定的。我以前从未见过这个错误。

我使用了这个编译器标志 -
-Wl,--no-warn-mismatch
但不得不把它拿出来,因为它破坏了很多其他的东西。

我正在使用的编译器标志是:
-fPIC -O2 -marm -march=armv7-a

4

1 回答 1

0

利用as -meabi=5

我不会声称我完全理解它...... :-) 但它解决了问题。

我试图做的事情失败了:

  • 使用从 4de5434b694fc260d02610e8e7fec21b2923600a 的 master 编译的 GNU AS 组装--target arm-elf
  • 与 Ubuntu 16.04arm-linux-gnueabihf-gcc版本 5.3.1链接

我认为 EABI 规范中提到的值说明了它http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044f/IHI0044F_aaelf.pdf

表 4-2,ARM 特定的 e_flags

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

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

于 2018-10-18T17:26:19.937 回答