답변1
꿀(협회)은 와인과 닮아가는 것을 목표로 하는 프로젝트입니다. 그러나 현재는 일부 명령줄 OSX 프로그램만 실행합니다. 2019년 중반 현재 많은 명령줄 프로그램을 실행할 수 있으며, 홈페이지에 따르면 일부 기본 그래픽 소프트웨어를 실행할 수 있는 수준에 가까워진 것으로 보입니다. 텍스트 기반이 아닌 한 아직 원하는 대로 작동하지 않을 수 있습니다.
OS X 프로그램 개발자가 소스 코드를 공개하고 크로스 플랫폼 라이브러리(예: QT, GTK, X11,GNUStep또는 WxWidgets) Linux용 OS X 프로그램을 다시 컴파일할 수 있어야 합니다. OS X와 Linux는 ABI 수준보다 API 수준에서 훨씬 더 호환됩니다.
GNUStepNeXTStep 및 OS X의 Cocoa API를 구현했습니다. 내가 그것을 시도했을 때, 그것이 많은 일을 할 수 있는 것처럼 보였지만, 야생에서는 거의 사용되지 않았기 때문에 그것이 얼마나 잘 수행되었는지 놀랐습니다. GNUStep은 소스 코드(API) 수준에서만 작동하므로 프로그램이 오픈 소스이고 Apple의 Cocoa GUI(독점 "Aqua" 아님)를 사용하는 경우 작동합니다. 이는 코드를 컴파일하고 링크할 수 있는지에 따라 달라집니다.
API(또는 애플리케이션 프로그래밍 인터페이스)를 자동차의 대시보드처럼 생각해보세요. 자동차 운전자는 모든 것을 볼 수 있고, 다른 사람의 차에 가서 다른 대시보드를 찾을 수도 있습니다. 이 역시 쉽게 알아낼 수 있습니다.
ABI(또는 애플리케이션 바이너리 인터페이스)를 자동차의 엔진이라고 생각하십시오. 제조사와 모델에 따라 크게 다를 수 있으며 Chevy 엔진을 볼보로 쉽게 교체하지 못할 수도 있습니다.
이 비유에서 Honey는 Chevy 엔진을 Volvo 섀시에 넣고 Chevy에서 Volvo로 컴파일하는 것처럼 소스에서 컴파일합니다. 프로그래머의 관점에서 보면 하나는 다른 것보다 간단합니다.
그러나 Apple에는 다른 어느 누구도 가지고 있지 않은 독점 사용자 인터페이스 라이브러리가 있습니다. 개발자가 이들 중 하나(예: Aqua)를 사용하는 경우 Darling이 Wine처럼 성장하거나 직접 포팅하기를 기다려야 합니다. 소스 코드가 공개되지 않으면 엔진이 볼보의 엔진 베이에 맞지 않을 정도로 크게 제작되었거나 볼보가 후륜 구동인 동안 전륜 구동 차량에 연결되도록 설계된 것과 같습니다. 누군가가 (가능한 최선의 방법으로) 몇 달 간의 자유 시간과 터무니없는 헌신을 하는 미친 미치광이가 아닌 한, 이런 일은 일어날 가능성이 거의 없습니다.
또한 GNUStep은 Cocoa API 적용 범위 측면에서 100% 완전하지 않으므로 복잡한 프로그램의 경우 일부 구둣주닝이 여전히 필요할 수 있습니다. 그리고 GNUStep은 xcode와 동등한 빌드 시스템을 제공하지 않습니다. 즉, 원래 개발자가 XCode IDE의 "빌드" 시스템을 독점적으로 사용하는 경우 이에 대한 makefile을 작성해야 할 수도 있습니다. 소프트웨어를 컴파일하고 링크한 경험은 있지만 이전 백엔드 경험 없이는 .xcodeproj와 같은 형식에서 유용한 정보를 얻는 것이 어려웠기 때문에 이것이 나에게 가장 실망스러운 부분이었습니다.