2014-03-29 5 views
1

iOS 및 OS X에 5 개의 아키텍처 (x86_64, i386, armv7, armv7s, arm64)의 정적 라이브러리가 있습니다.fat 바이너리와 64 비트 시뮬레이터 타겟을 연결할 때 오류가 발생했습니다.

  • x86_64의 아키텍처는
  • 의 i386 아키텍처는
  • 는 ARM 아키텍처 내가 연결하려고하면 iphoneos의 SDK

를 사용하여 구축 된 iphonesimulator의 SDK를 사용하여 구축 된에서라도 SDK를 사용하여 구축되었다 예제 App의 결과 라이브러리는 장치 또는 32 비트 IOS 시뮬레이터 대상을 빌드 할 때 작동합니다. 하지만 내가 링커 오류가 64 비트의 iOS 시뮬레이터 타겟을 빌드 할 때 : 나는 모든 장치와 시뮬레이터 작동 지방 라이브러리에서 x86_64에 슬라이스를 제거하면

ld: framework not found CoreServices for architecture x86_64 

.

필자는 64 비트 시뮬레이터 용으로 링커가 x86_64 아키텍처를 선호하기 때문에 그것을 사용한다고 가정합니다. 그러나 그것은 macosx SDK 용으로 컴파일되고 링크 되었기 때문에 어떻게 든 인코딩 된 OS X 의존성을 가지고 있습니다.

iphonesimulator SDK의 두 번째 x68_64 슬라이스를 추가하려고했지만 lipo가 허용하지 않습니다. 또한 시뮬레이터가 64 비트 빌드에서도 i386 아키텍처를 사용하도록 만드는 방법을 찾으려고했지만, 지금까지는 아무런 운이 없었습니다.

절대적으로 필요한 경우이 문제를 해결할 수있는 2 개의 바이너리를 만들 수 있지만 실제로는 하나의 파일로 만드는 것이 더 좋습니다. 이것을 달성 할 수있는 방법이 있습니까?

+0

osx 및 ios 시뮬레이터 아키텍처가 구별 할 수 없기 때문에 2 개의 바이너리가 필요하다고 생각합니다. –

답변

1

iOS 기기 및 시뮬레이터 용으로 만 빌드하여 해결했습니다. iOS 시뮬레이터 SDK의 64 비트 슬라이스는 iOS 및 OS X 타겟에서도 똑같이 작동합니다. OS X와 ​​iOS (내 경우에만 Foundation)간에 공유되는 것 이외의 다른 프레임 워크는 필요하지 않습니다.