Unterschied Armeabi/Armeabi-v7a Libraries?
Hallo ich wüsste gerne was der unterschied zwischen Armeabi und Armeabi-v7a Libraries ist und welche cflags/ldflags notwendig sind um 100 Prozent das Eine oder das Andere zu kompilieren. Ich arbeite mit den Toolchains vom NDK und da gibt es ja nur das allgemeine für ARM und rest wird soweit ich weiß ja über flags beim kompilieren geregelt.
Ich habe mir so gedacht, dass es ohne spezielle flags für armeabi kompiliert und mit sachen wie -march=armeabiv7-a und -mfloat-abi=softfp für armeabi-v7a. Habe jedoch gelesen, dass ein Unterschied ist , dass die armeabi nur soft floating point kann und arneabi-v7a auch hard . Das würde aber doch dem cFlag -mfloat-abi=softfp widersprechen.
Würde mich über schnelle Präzise Antworten freuen ;)
1 Antwort
Armeabi-Code läuft auf allen ARM-Prozessoren, die in Android-Geräten verbaut worden sind. Armeabi-v7a läuft nur auf ARM-v7a-CPUs.
Armeabi-v7a verwendet zusätzliche CPU-Instructions, die auf älteren ARM-Prozessoren eine Exception auslösen (was i.d.R. zu einem Programmabsturz führt). Davon sind nicht nur Floating-Point-Instructions betroffen.
Die zusätzlichen Instructions führen allerdings zu schnellerem Code.
Man hat also die Wahl zwischen:
- Kompatibilität zu älteren CPUs (auch neue Geräte werden noch mit diesen CPUs gebaut) und
- Mehr Geschwindigkeit
Es ist auch möglich, unterschiedliche Native Libraries in eine .apk-Datei zu packen.
Besten Dank für diese super, ausführliche Antwort =)