2017-06-20 177 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

相關問題