macOSとLinuxの間にバイナリの非互換性がある場合、POSIXに準拠することはどういう意味ですか?

macOSとLinuxの間にバイナリの非互換性がある場合、POSIXに準拠することはどういう意味ですか?

POSIXUnixバリアントとのソフトウェア互換性(移植性)を達成するために開発されました。

POSIX(Portable Operating System Interface)は、オペレーティングシステム間の互換性を維持するためにIEEE Computer Societyによって指定された一連の標準です。1POSIXは、Unixおよび他のオペレーティングシステムのバリエーションとのソフトウェア互換性(移植性)を可能にするために、システムレベルおよびユーザーレベルのアプリケーションプログラミングインタフェース(API)、ならびにコマンドラインシェルおよびユーティリティインタフェースを定義します。1POSIXはIEEEの商標でもあります。1POSIXは、アプリケーションやシステム開発者が使用するように設計されています。2

macOSとLinuxの両方POSIX互換。したがって、macOS用に書かれたアプリケーションはLinuxで実行する必要があるのは当然です。

しかし、それによるとこの問題、macOSとLinuxの間にバイナリの非互換性があります。選択された優れた回答によると、これは適切なライブラリとリンクする必要があるためですが、実際の問題は互換性のないシステムコールであると述べたコメントで拒否されました。

それでは、macOSとLinuxの間にバイナリの非互換性がある場合、POSIXに準拠することはどういう意味ですか?それではPOSIXは役に立たなくなりますか?

答え1

鍵はあなたが引用した部分です:

POSIXは、システムレベルとユーザーレベルのアプリケーションプログラミングインターフェース(API)を定義します。

アプリケーションプログラムの作成インターフェースは、アプリケーションのプログラミングに使用できるインターフェースを定義します。これは、POSIXに従ってプログラムを作成できることを意味し、次のことができます。立てるPOSIX互換システムで使用できます(POSIX機能のみを使用した場合)。

POSIXはアプリケーションに興味がありませんバイナリこれは与えられたバイナリを実行する際の重要なインターフェイスです。

したがって、ソースコードをPOSIX APIのみを使用するプログラムに変換し、それをmacOSおよびPOSIX準拠のLinuxシステムでビルドし、結果のバイナリを実行できます。少なくとも一部の翻訳プログラム(Windows用のWineプログラムなど)がなければ、macOSバイナリはLinux上で実行できません。

さらに、多くのプログラムはPOSIX API以上の機能を使用しているため、必要なものすべてがターゲットシステム(ライブラリがある場所)でも利用できることを確認する必要があります。

関連情報