2010-06-06 7 views
2

iPhone 또는 iPad 용 응용 프로그램에 정적 라이브러리를 포함시키는 것이 가장 좋은 방법입니까?iphone/ipad 응용 프로그램에 정적 라이브러리 첨부하기

내가

  • 선택할 수있는 라이브러리/우 플랫폼을 공급하고 ar 유틸리티 라이브러리 파일을 구축 한 다음 라이브러리가 .c 소스 프로젝트를 포함
  • 에 프레임 워크로 추가 컴파일 내가 포함 할 라이브러리의 모든 특정 설정을 관리 걱정하지 않습니다하지만 어떻게 내가 도서관 봇을 만들 수 있기 때문에 .H 및 응용 프로그램

첫 번째 방법은 간단한 것 같습니다과 함께 컴파일 h를 iPhone 및 iPad 용으로 사용하고 xcode가 링크시 올바른 라이브러리를 사용하도록 허용 하시겠습니까?

두 번째 방법은 xcode가 내 응용 프로그램과 라이브러리를 컴파일하는 데 신경을 써야하므로 (내가 생각한 다른 설정으로) 어떻게해야합니까? lib의 소스를 쉽게 추가 할 수 있지만 xcode가 올바른 방법으로 빌드 할 수 있도록 make 스크립트를 포함해야합니다.

진행 방법에 대한 제안 사항이 있으십니까? 내가 포함하려고하는 라이브러리는 libssh입니다. (물론이 라이브러리는 이미 컴파일되어 iPhone에서 성공적으로 시도되었습니다.)

미리 감사드립니다.

답변

1

나는 첫 번째 접근법에 대해 갈 것이다.

아마도 iPhone과 iPad 용 라이브러리의 두 가지 버전을 빌드해야합니다. 이들은 다른 아키텍처 (iPhone 3G의 경우 armv6, iPhone 3GS의 경우 armv7, iPhone 시뮬레이터의 경우 i386, iPad의 경우 armv7 및 i386)를 포함하는 팻 라이브러리 여야합니다.

기본적으로 iPhone 용으로 3 가지 버전을 만든 다음 lipo 도구를 사용하여 뚱뚱한 파일로 병합합니다.

그런 다음 iPad 용으로 두 가지 버전을 다시 빌드하고 lipo를 사용하여 병합합니다. iPad에서는 원래 iPhone 용으로 컴파일 한 armv7 및 i386 버전을 다시 사용할 수 없습니다. 두 가지 SDK에 속한 컴파일러 (iPhone 용 3.1, iPad 용 3.2)를 사용하여 빌드해야하기 때문입니다.

lipo를 사용하면 두 개의 armv7 또는 두 개의 i386 버전의 라이브러리를 하나의 파일에 병합 할 수 있는지 확실하지 않습니다. 이 경우 전체 프로세스가 끝나면 하나의 지방 라이브러리 만 제공 할 수 있으므로이 방법을 사용해보십시오.