ネイティブ ライブラリが OSGi バンドルに登録されている場合は、次のBundle-NativeCode
ヘッダーを使用します。
libjnotify.so;osname = Linux;processor = x86
これにより、libjnotify.so
Java VM が x86 Linux 環境で実行されている場合にライブラリを使用できるようになります。
可能なプロセッサー・アーキテクチャーは、OSGi Web サイトにリストされています。ただし、これは新しい OS やプロセッサ アーキテクチャには対応していません。さらに、プロセッサ アーキテクチャだけでは不十分な環境はカバーしていません。
後者の例として、ARM 環境を考えてみましょう。OSGi は ARM_le と ARM_be を提供してくれますが、これだけでは不十分だと理解しています。ARM アーキテクチャの異なるバージョン (ARMv6、ARMv7 など) は、エンディアンに関係なく、バイナリ互換ではありません。さらに、FPU を備えた ARM アーキテクチャは、「ソフト フロート」(armel) または「ハード フロート」(armhf) ABI のいずれかを使用する OS を実行できます。ハード フロート用にコンパイルされたライブラリは、ソフト フロート システムでは実行できません。
では、これらのより複雑な環境では、ネイティブ コードをどのようにロードすればよいのでしょうか?