我正在尝试使用 ARM 工具链编译 .so 文件。但是我不断收到此错误-
错误:源对象的 EABI 版本为 0,但目标对象的 EABI 版本为 5
我无法更改工具链中的任何内容,因为我必须使用给定的。我以前从未见过这个错误。
我使用了这个编译器标志 -
-Wl,--no-warn-mismatch
但不得不把它拿出来,因为它破坏了很多其他的东西。
我正在使用的编译器标志是:
-fPIC -O2 -marm -march=armv7-a
利用as -meabi=5
我不会声称我完全理解它...... :-) 但它解决了问题。
我试图做的事情失败了:
--target arm-elf
arm-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 。