2

.soLinux用にELF形式でコンパイルされたライブラリがあります。これはJavaプログラムで使用されています。このアプリケーションをMacOSXに移植しようとしていますが、OSXがこれらのファイルに異なる拡張子を使用していることを発見しました.jnilibPATHファイルが正しく検出されるようにを設定する方法はすでに理解しています。ただし、OS X Javaは.soファイルをロードできません(他の拡張子を想定しているため)。

ファイル拡張子をからに変更する.so.jnilib、JVMはファイルを見つけることができますが、読み取ることができません(ファイルが正しくコンパイルされていないため)。

LinuxシステムまたはMacOSXのいずれかで、ソースコードなしで.soこれらのファイルを変換する方法はあります.jnilibか?これは不可能だと思いますが、Stack Overflowはまだ失敗していません。また、「不可能」を失敗とは見なしません。

4

1 に答える 1

4

Mac OS X で Linux のネイティブ ライブラリを使用しようとしていますか? いいえ、うまくいきません。

ネイティブ ライブラリの Mac バージョンを取得し、そのサフィックスがまだない場合は名前を jnilib に変更する必要があります。

これが、JVM バイト コードとネイティブ コードの主な違いです。ネイティブ コードはプラットフォーム固有です。さまざまな Linux フレーバー用の JNI ライブラリの複数のバージョンもあります。

Mac と Linux はすべて同じ CPU を使用し、すべて Unix ベースであるため、それにかなり近いとはいえ、不可能とは言えません。

于 2009-09-29T22:14:55.040 に答える