2017-06-20 6 views
1

J'utilise la carte de développement Mediatek X20 et gcc-linaro-6.3.1-2017.05 version pour la référence aarch64 vs aarch32. Donc je veux construire des binaires comme 2 types de aarch32 abi: lp64, ilp32.Comment puis-je créer un binaire ARMv8 aarch32?

De manuel gcc, (@ [toolchain_path] /share/doc/gcc/AArch64-Options.html)

Il dit que je peux choisir ilp32 et lp64 avec option -mabi.

Mais quand je l'utilise -mabi=lp64 ou -mabi=ilp32, gcc fait erreur comme ci-dessous.

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 

Comment puis-je faire ilp32 et lp64 binaire formated?

Et comment puis-je vérifier le format binaire?

Merci pour votre réponse :)

+0

1) Le chemin de CROSS_COMPILE et ARCH correct? 2) Avez-vous suffisamment d'autorisations sur le chemin source du noyau? –

+0

mes réponses :) 1, 2) Je viens de construire test.c. Donc, je construis avec la commande ci-dessous. "armv8l-linux-gnueabihf-gcc test.c -o-marc = armv8-a + crc -mabi = lp64" – soongk

Répondre

0

Il y a maintenant une coupe pour AMD64 toolchain arm64ilp32 pour Debian ciblage stable ici: https://people.linaro.org/~wookey/ilp32/

Il est très nouveau, mais semble fonctionner très bien. Notez que cela cible uniquement arm64ilp32. Si vous souhaitez également cibler arm64 normal (LP64), vous devez également installer le compilateur croisé aarch64-linux-gnu déjà dans l'archive.

Les commentaires sont les bienvenus. Le compilateur croisé g ++ n'est pas encore installable car il n'y a pas de libstdC++: arm64ilp32 disponible.

Mise à jour (sept 2017). Ce repo contient maintenant un ensemble debootstrappable arm64ilp32 de paquets pour Debian stable.

1

ILP32 et ILP64 sont à la fois AArch64, que l'un d'eux est limité aux adresses 32 bits, mais le codage d'instruction est le même. Pour cela, vous devrez utiliser une chaîne d'outils spéciale. Je n'ai pas essayé cela, mais vous devriez Google pour "AArch64 ILP32 toolchain". On dirait que ce n'est pas activement maintenu cependant. Si vous voulez AArch32, c'est juste ARMv7 et vous avez besoin de l'outil d'armement standard (arm-linux-gnueabihf). https://wiki.linaro.org/Platform/arm64-ilp32