lipo 명령
출처 : https://ss64.com/osx/lipo.html
결과출처 : 직접 실행
스테틱 라이브러리에 다양한 빌드 아키텍쳐를 넣기 위해서는 lipo 명령을 이용한다.
아이폰 디바이스에는 arm계열이, Mac에서 시뮬레이터를 돌리려면 x86계열이 필요하다.
용량은 포함하는 만큼 늘어나므로 시뮬레이터가 필요 없다면 빼서 용량을 줄일 수 있다.
명칭이 재밌게도 아키텍쳐 빌드를 두개 이상 합쳐서 Universal 형태로 만들면 fat file이 되고, thin 옵션을 주면 Non-fat file이 된다.
1. 정보 가져오기
lipo -info libMyStatic.a
결과 예시
Architectures in the fat file: libMyStatic.a are: armv7 i386 x86_64 arm64
libMyStatic.a 파일은 빌드가 armv7, i386, x86_64, arm64 이렇게 구성됨
2. 특정 빌드만 추출하기
lipo libMyStatic.a -thin armv7 -output libMyStatic.a.armv7
새로 생성된 libMyStatic.a.armv7 파일을 lipo -info를 해보면 armv7만 볼 수 있다.
Non-fat file: libMyStatic.a.armv7 is architecture: armv7
예시에선 파일명 끝에 .armv7을 붙였는데 이름은 아무렇게나 정해도 상관없다.
3. 특정 빌드 합치기
lipo -create -output libMyStatic.a.iphone libMyStatic.a.armv7 libMyStatic.a.arm64
-output 다음에 연속해서 써서 조금 헷깔리는데, -output 다음에 나오는게 결과물이고, 그 이후에 나오는 모든 항목들은 합칠 아키텍쳐 들이다.
새로 생성된 libMyStatic.a.iphone 파일을 lipo -info를 해보면 armv7, arm64 둘다 볼 수 있다.
Architectures in the fat file: libMyStatic.a.iphone are: armv7 arm64