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 이상의 기능을 사용하므로 필요한 모든 것이 대상 시스템(라이브러리가 있는 곳)에서도 사용할 수 있는지 확인해야 합니다.

관련 정보