質問: osxプログラムがlinuxで実行できないのはなぜですか? osxとlinuxの間には多くの違いがあることは知っていますが、根本的に互換性がないようにするために、それらがまったく異なる点は何ですか?
回答: os xアプリがlinuxで実行されない最も重要な理由は、それらのosが異なるシステムコールを使用したためです。以前のいくつかの回答ではライブラリについて言及しましたが、一般的にはそうではありません-core foundationは、主にappleという名前でcfliteの名前でオープンソース化されており、任意のプラットフォームに容易に移植できます(itunesのwindowsバージョンは実際にはcore foundationのwindowsへの移植、およびいくつかのコンパイラの調整により、linuxディストリビューションでclangを使用してcfliteを直接作成できます)また、objective-c環境、主にfoundationとappkitをlinux、特にgnustepに移植するオープンソースの取り組みもあります。 、gnu openstepの実装。これはappleのcocoaよりも前の日付です(next computer社がまだあったときに始まりました)。誰かが決まったら、すべてのmach-o syscallをキャプチャして対応するlinux syscallに変換するローダーを設計し、それらのオープンソースライブラリの「カウンターパート」を適切なabi変換でバイナリに動的にリンクできます。また、参考までに、mach-oアプリケーションのソースコードを入手できる場合は、それを移植することを検討すると、非常に簡単になる場合があります。例として、os x 10.6にバンドルされているtexteditアプリは、数行の(重要でない)cfコードを取り除いた後、gnustepにリンクして直接再コンパイルできるため、linuxですぐに利用できます(gnustepに付属するtexteditは実際にはos xの前身であるnextstepのtexteditアプリを直接再コンパイルし、「©1995 next」ラベルも保持します)。 texteditはbsdライセンスの下にあります。