【发布时间】:2016-05-12 11:40:10
【问题描述】:
我正在尝试使用 ARM 工具链编译 .so 文件。但是我不断收到此错误-
错误:源对象的 EABI 版本为 0,但目标对象的 EABI 版本为 5
我无法更改工具链中的任何内容,因为我必须使用给定的那个。我以前从未见过这个错误。
我使用了这个编译器标志 - -Wl,--no-warn-mismatch
但不得不把它拿出来,因为它打破了很多其他的东西。
我使用的编译器标志是:-fPIC -O2 -marm -march=armv7-a
【问题讨论】:
-
你没有说哪个工具链或目标操作系统?对于 GCC,您有
-mabi=name,其中名称是 apcs-gnu、atpcs、aapcs、aapcs-linux 之一 或 iwmmxt。虽然听起来你可能没有 ELF 文件或其他东西。试试file test.o看看你在编译阶段创建了什么类型的文件。我认为 aapcs 是更新的版本(至少它不是版本 zero)。 -
谷歌搜索一下会得到wiki.debian.org/ArmEabiPort,这可能会有所帮助。
-
是的,听起来确实像是您试图将 OABI 和 EABI 对象链接在一起(刚刚尝试过,它肯定会产生完全相同的错误)。如何处理它主要取决于您未包含在问题中的所有细节......