2017-06-20 50 views
1

我使用的是Mediatek X20开发板和gcc-linaro-6.3.1-2017.05版本 ,其基准为aarch64 vs aarch32如何构建ARMv8 aarch32二进制文件?

所以我想建立二进制文件作为2种类型的aarch32 abi:lp64,ilp32

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

它说我可以选择ilp32lp64-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 

怎样才能让ilp32lp64格式化二进制?

如何检查二进制格式?

感谢您的答复:)

+0

1)CROSS_COMPILE和ARCH的路径正确? 2)你有足够的权限到内核源代码路径吗? –

+0

我的回答:) 1,2)我只是建立test.c. 所以我用下面的命令来编译。 “armv8l-linux-gnueabihf-gcc test.c -o -march = armv8-a + crc -mabi = lp64” – soongk

回答

0

现在有一个交叉工具链AMD64打靶arm64ilp32 Debian的稳定在这里: https://people.linaro.org/~wookey/ilp32/

这是非常新的,但似乎工作的罚款。请注意,这只针对arm64ilp32。如果你还想定位正常的arm64(LP64),那么你还需要安装已存在于存档中的aarch64-linux-gnu交叉编译器。

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

更新(2017年9月)。这个回购现在包含debian稳定的debootstrappable arm64ilp32套件。

1

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

相关问题