본문 바로가기

Mac&iOS

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