2

これに関するドキュメントはないようです。jlink では、イメージをビッグ エンディアンにするかリトル エンディアンにするかを指定できます。何も指定しない場合は、ネイティブのバイト順が使用されます。

イメージをビルドして、エンディアンを指定しないか、ほとんど指定せずに実行できます (私は i7 ベースのマシンを使用しています)。ビッグ エンディアンを指定すると、初期化中にオブジェクトが見つからないためエラーが発生します。したがって、不一致を検出してエンディアンを逆にすることはできないようです。

jlink の内部を見ると、jimage ImageStream では、イメージを書き出すために ByteBuffers が割り当てられます。これらはエンディアン固有です。

渡されるエンディアンは指定したものであり、デフォルトは基になるハードウェアのエンディアンである ByteOrder.nativeOrder() です。

したがって、jlink は、一度コンパイルすればどこでも実行できるという考えを破るように思えます。リトル エンディアン プラットフォームにリンクされた jlink イメージは、ビッグ エンディアンおよび v/v プラットフォームでは機能しません。

サニティチェックに便利なビッグエンディアンプラットフォームを持っていないので、誰かが私の分析が正しいことを確認できますか?

ありがとう、

4

0 に答える 0