26

ドキュメントからわかる限り、Android NDK でサポートされている 2 つの ARM アーキテクチャの違いは、サポートされている CPU 命令のセットのみです。本当にそうですか?呼び出し規約やシステム コール シーケンスなどに違いはありませんか?

モジュールを ARM オブジェクト ファイル (NDK 以外のコンパイラ (具体的には Free Pascal) を使用) にコンパイルし、アーキテクチャとして ARMv6 を指定し、それを armeabi および armeabi-v7a 共有ライブラリの両方にリンクするとどうなるか疑問に思っています。FPC ビットは、システム コールも Java コールも実行しないと想定されていますが、私自身の C ベースのインターフェイスを介する場合を除きます。

編集: ARM 用の FPC でコンパイルされた Hello World ライブラリは、ARMv7a エミュレーターでリンクおよび実行されます。

4

1 に答える 1

9

v7 で armeabi 共有ライブラリを確実に実行でき、そのエクスポートされた関数を別のモジュールから呼び出すことができます。したがって、.so念のため、Pascal コードとは別のファイルを作成し、armeabi (おそらくいくつかの C/C++ ラッパーを使用) に準拠させ、この共有ライブラリを armeabi ライブラリと armeabi-v7a ライブラリの両方で使用します。すべてを正しい順序でロードする最も簡単な方法は、

System.loadLibrary("pascal"); // armeabi
System.loadLibrary("c++"); // the platform will choose armeabi or armeabi-v7a
于 2012-09-02T09:32:23.147 に答える