web-dev-qa-db-fra.com

Différence entre armeabi et armeabi-v7a

Pour autant que je sache à partir des documents, la différence entre les deux versions prises en charge de ARM architecture dans Android NDK est uniquement dans l'ensemble des instructions CPU prises en charge) Est-ce vraiment le cas? N'y a-t-il pas de différence dans les conventions d'appel, la séquence d'appels système ou autre chose?

Je me demande ce qui se passera si je compile un module dans un fichier objet ARM (avec un compilateur autre que NDK - Free Pascal en particulier), en spécifiant ARMv6 comme architecture, puis en le liant à les bibliothèques partagées armeabi et armeabi-v7a. Les bits FPC ne sont pas censés effectuer ni appels système ni Java, sauf via ma propre interface basée sur C.

EDIT: une bibliothèque du monde bonjour, compilée avec FPC pour ARM, relie et s'exécute sous l'émulateur ARMv7a.

22
Seva Alekseyev

Vous pouvez certainement exécuter la bibliothèque partagée armeabi sur v7, et vous pouvez appeler ses fonctions exportées à partir d'un autre module. Donc, pour être sûr, je créerais un .so fichier de votre code Pascal, respectant armeabi (peut-être avec certains wrappers C/C++), et utilisez cette bibliothèque partagée avec vos bibliothèques armeabi et armeabi-v7a. La façon la plus simple de tout charger dans le bon ordre est d'utiliser

System.loadLibrary("Pascal"); // armeabi
System.loadLibrary("c++"); // the platform will choose armeabi or armeabi-v7a
8
Alex Cohn