我使用的是Mediatek X20开发板和gcc-linaro-6.3.1-2017.05
版本
对于基准aarch64
与aarch32
。
所以我想将二进制文件构建为两种aarch32
abi:lp64
,ilp32
。
来自gcc手册,(@ [toolchain_path] /share/doc/gcc/AArch64-Options.html)
它说我可以选择ilp32
和lp64
-mabi
选项。
但是,当我使用-mabi=lp64
或-mabi=ilp32
时,gcc
会产生如下错误。
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
如何制作ilp32
和lp64
格式化二进制文件?
我如何检查二进制格式?
感谢您的回复:)
答案 0 :(得分:1)
ILP32和ILP64都是AArch64,其中只有一个限于32位地址,但指令编码是相同的。为此,您需要使用特殊的工具链。我没试过这个,但你应该谷歌为#34; AArch64 ILP32工具链"。看起来虽然没有积极维护。 如果你想要AArch32,那就是ARMv7,你需要常规的arm工具链(arm-linux-gnueabihf)。 https://wiki.linaro.org/Platform/arm64-ilp32
答案 1 :(得分:0)
现在有一个针对Debian稳定的amd64目标arm64ilp32的交叉工具链: https://people.linaro.org/~wookey/ilp32/
它很新,但似乎工作正常。请注意,这仅针对arm64ilp32。如果您还想要定位普通的arm64(LP64),那么您还需要安装已经存档的aarch64-linux-gnu交叉编译器。
非常欢迎反馈。 g ++交叉编译器尚不可安装,因为没有相应的libstdc ++:arm64ilp32可用。
更新(2017年9月)。这个repo现在包含一个用于Debian stable的debootstrappable arm64ilp32包。