[iOS] ios용 universal binary 만들기

회고

  • 10년이 지난 지금 이게 무슨 필요가 있냐 싶지만…. 일단 글을 옮기는 목적에만 충실히 하기 위해…

내용

  • iPhone3는 arm6, iPhone3GS/iPhone4는 arm7 아키텍처

  • otool 로 확인하기
    $ otool -hv libXXX.a
    
    • Universal Binary가 아닌 경우
    $ otool -hv libXXX.a
    Archive : libXXX.a (architecture armv6)
    .
    .
    $
    
    • Universal Binary인 경우
    $ otool -hv libXXX.a
    Archive : libXXX.a (architecture armv6)
    .
    .
    Archive : libXXX.a (architecture armv7)
    .
    .
    Archive : libXXX.a (architecture i386)
    ...
    $
    
  • 라이브러리를 XCode로 빌드한 경우
    • Build Settings->Architectures->Architectures에 armv6, armv7, i386을 모두 명시하면 됩니다.
    • Build Settings->Architectures->Valid Architectures에도 armv6, armv7, i386을 모두 명시합니다.
    • 라이브러리를 Makefile로 빌드하여, architecture별로 library파일이 따로 존재하는 경우
    • lipo 명령어를 사용하여 library를 Universal Binary 하나로 합쳐줍니다
    $ lipo libXXX.armv6.a libXXX.armv7.a libXXX.i386.a -create -output libXXX.a
    $