3

Solaris 8および10でコンパイルされたコードがあり、Linuxでbin/exeを使用したいベンダーがいる場合。互換性の問題はありますか?

Linux OSで100%動作させるには、コンパイル/リンクする必要があると確信していますが、exeにすべてが含まれているにもかかわらず、Linuxで動作しない理由について誰かが私に内訳を教えてくれるかどうかを知りたいだけです。それを実行するためにそれ以上何も必要としないはずなので、それについて動的なものは何もありません。ランタイムライブラリについて話していない限り、不一致があるとexeが失敗する可能性があります。

4

2 に答える 2

8

Linuxでアプリケーションを再コンパイルする必要があります。

Linuxは、Solarisとはまったく異なるランタイムです。アプリケーションを静的にコンパイルした場合でも、これら2つのオペレーティングシステム間で異なるカーネルへのインターフェイス/システムコールがあります。プロセッサアーキテクチャも異なる場合があります。たとえば、SPARCとX86です。

SolarisとLinuxはどちらも標準のCAPIとPosixAPIのほとんどをサポートしているため、Solaris専用のAPIを使用していない場合、Linuxでの再コンパイルはそれほど大きな問題ではないことがよくありますが、すべてを徹底的にテストし、注意する必要があります。エンディアン、および潜在的な64ビットと32ビットの問題。

于 2011-02-15T21:10:01.223 に答える
2

SolarisバイナリをそのままLinuxで実行することを許可しないと私が思う他のことは次のとおりです。

  1. ハードウェアアーキテクチャ:
    1.1 Solarisは通常Sun独自のSPARCマシンで実行され、特に8〜10はIntelアーキテクチャでも実行できます。
    1.2 Linuxは通常Intelマシンで実行されます(ただし、Sparcマシンで実行できます)。

  2. コンパイラ:
    2.1 Solaris 8は、Sun独自のコンパイラ(Sun WorkShop 6以降)と標準ライブラリの実装を使用します(したがって、異なるライブラリ名、ABIの非互換性などがあります)。Solaris 10には実際にはgccが付属していますが、おそらくそれを使用していません(Solaris 8でのみビルドしていると思います)。
    2.2 Linuxは、ライブラリ名、ABIの非互換性などに、上記と同じようにg++を使用します。

于 2011-02-15T21:30:22.920 に答える