2

我正在使用 Mediatek X20 开发板和gcc-linaro-6.3.1-2017.05版本进行基准测试aarch64aarch32.

所以我想将二进制文件构建为两种类型的aarch32abi : lp64, ilp32.

来自 gcc 手册,(@ [toolchain_path]/share/doc/gcc/AArch64-Options.html)

它说我可以选择和ilp32选项。lp64-mabi

但是当我使用-mabi=lp64or 时-mabi=ilp32gcc会出现如下错误。

armv8l-linux-gnueabihf-gcc: error: unrecognized argument in option \u2018-mabi=lp64\u2019
armv8l-linux-gnueabihf-gcc: note: valid arguments to \u2018-mabi=\u2019 are: aapcs aapcs-linux apcs-gnu atpcs iwmmxt

如何制作ilp32lp64格式化二进制文件?

以及如何检查二进制文件的格式?

感谢您的回复 :)

4

2 回答 2

1

ILP32 和 ILP64 都是 AArch64,只是其中一个被限制为 32 位地址,但指令编码是相同的。为此,您将需要使用特殊的工具链。我没有试过这个,但你应该谷歌搜索“AArch64 ILP32 工具链”。看起来它没有被积极维护。如果你想要 AArch32,那就是 ARMv7,你需要常规的 arm 工具链 (arm-linux-gnueabihf)。 https://wiki.linaro.org/Platform/arm64-ilp32

于 2017-06-21T01:06:18.637 回答
0

现在有一个针对 Debian 稳定版的 amd64 的交叉工具链: https ://people.linaro.org/~wookey/ilp32/

这是非常新的,但似乎工作正常。请注意,这仅针对 arm64ilp32。如果您还想以普通 arm64 (LP64) 为目标,那么您还需要安装存档中已经存在的 aarch64-linux-gnu 交叉编译器。

非常欢迎反馈。g++ 交叉编译器尚未安装,因为没有相应的 libstdc++:arm64ilp32 可用。

更新(2017 年 9 月)。这个 repo 现在包含一组用于 Debian stable 的可 debootstrapable arm64ilp32 软件包。

于 2017-07-28T19:48:55.587 回答