ドキュメントからわかる限り、ARM Architecture in Android NDKはサポートされているCPU命令のセットのみにあります。 。それは本当にそうですか?呼び出し規約、システム呼び出しシーケンス、または他の何かに違いはありませんか?
モジュールをARMオブジェクトファイル(NDK以外のコンパイラ-具体的にはFree Pascalを使用)にコンパイルし、アーキテクチャとしてARMv6を指定し、それをリンクすると、 armeabiとarmeabi-v7aの両方の共有ライブラリ。FPCビットは、システムコールもJavaコールも、独自のCベースのインターフェイスを介して実行することもありません。
編集:ARM向けFPCでコンパイルされたHello Worldライブラリは、ARMv7aエミュレーターでリンクおよび実行されます。
V7でarmeabi共有ライブラリを実行でき、エクスポートされた関数を別のモジュールから呼び出すことができます。したがって、安全のために、Pascalコードから個別の.so
ファイルを作成し、armeabiに(おそらくC/C++ラッパーを使用して)貼り付け、この共有ライブラリをarmeabiとarmeabiの両方で使用します。 v7aライブラリ。すべてを正しい順序で読み込む最も簡単な方法は、
System.loadLibrary("Pascal"); // armeabi
System.loadLibrary("c++"); // the platform will choose armeabi or armeabi-v7a