문제

향후 프로젝트에서는 Windows와 Linux에서 컴파일되는 기존 C++ 코드를 MacOS(leopard)로 이식할 계획이 있습니다.소프트웨어는 명령줄 응용 프로그램이지만 GUI 프런트 엔드가 계획될 수도 있습니다.MacOS는 g++ 컴파일러를 사용합니다.Linux와 동일한 컴파일러를 사용하면 문제가 없을 것 같지만 항상 문제가 있습니다.

이식 중에 주의해야 할 권장 사항이나 문제가 있나요?

도움이 되었습니까?

해결책

귀하의 앱에 GUI가 있습니까? 어떤 GUI(네이티브/Qt/Gtk+)입니까?

그렇지 않은 경우 (Linux와 비교하여) 주의해야 할 문제는 주로 동적 연결 영역에 있습니다.OS X은 '-dylib' 및 '-bundle'을 사용하며 실제로 두 종류의 동적 라이브러리(런타임 로드 가능 및 일반 라이브러리)를 가지고 있습니다.Linux에는 한 가지 종류(-shared)만 있으며 어쨌든 이 경우에는 더 느슨합니다.

앱에 GUI가 있는 경우 Objective-C를 사용하여 전체 내용을 Cocoa로 코딩해야 합니다.당신이 새로운 일에 빠지게 될 것이라는 의미 언어 또한.MS와 같은 일부 사람들은 Carbon(C++ API)을 사용했지만 단계적으로 폐지되고 있습니다.나는 새로운 프로젝트에 그것을 권장하지 않습니다.

가장 좋은 행운은 Qt나 Gtk+를 사용하는 것입니다.네이티브 Gtk+ 포트가 며칠 전에 (재)발표되었습니다(참조 이미디오).

추신.물론 OS X에서는 X11 바이너리도 실행하지만 이를 고객에게 전달하는 것은 어려운 일이 될 수 있습니다.그들은 Aqua 인터페이스에 익숙하고 그것으로 생산성을 발휘합니다.X11은 매우 단기적인 솔루션이라고 생각하세요.

p.s.OS X와 ​​함께 제공되는 오픈 소스 애드온 라이브러리의 수는 제한되어 있으며 해당 버전이 부족할 수 있습니다.Linux에서는 사용자에게 'libxxx v.y.y'를 설치하도록 쉽게 요구할 수 있는 반면, OS X에는 여러 패키징 접근 방식(fink, macports)이 있으며 상용 도구의 경우 필요한 라이브러리가 애플리케이션에 포함될 것으로 예상됩니다.OS X은 이를 위해 '애플리케이션 번들'과 '프레임워크'(로컬 복사본, 애플리케이션을 자급자족하게 만드는)를 제공합니다.리눅스에는 그런 개념이 없습니다.이는 빌드 시스템에도 큰 영향을 미칩니다.아마도 당신은 다음과 같은 것을 시도하고 싶을 것입니다 SCons 모든 플랫폼에?

다른 팁

리코드 할 필요가 없습니다 모든 것 객관적인 c. C ++ 및 Objective-C의 이상한 자식이있어 Objective-C에서 C ++ 코드를 사용할 수 있으므로 C ++에서 모델 코드를 지능적으로 분할하고 Objective-C의 View/Controller Code를 지능적으로 분할 할 수 있습니다. Objective-C를 사용하려면 .m 대신 .mm으로 소스 코드 파일을 접미사하면 동일한 라인에서도 대부분의 법적 C ++ 및 Objective-C 구문을 혼합 할 수 있습니다.

우리는 MacOS로 포팅되지 않았지만 Linux의 다양한 Unixes로 포팅되었습니다. 주요 작업 영역은 설치 및 스타트 업 시스템이므로 대부분의 작업을 수행 할 것으로 예상됩니다 (기존의 경우 Linux 사이에 이미 휴대용이 가능합니다. 그리고 창).

Macintosh(macosx)는 내부적으로는 본질적으로 FreeBSD입니다(비록 조정되었지만).Linux와 FreeBSD의 시스템 프로그래밍에는 몇 가지 차이점이 있습니다.주로 이러한 차이점은 다양한 시스템 호출 간에 존재합니다.따라서 이것이 얼마나 영향을 미치는지는 응용 프로그램이 수행하는 작업과 실행 중에 수행하는 OS 시스템 호출의 종류에 따라 결정됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top