2016-10-10 3 views
1

내 아이폰 OS 프로젝트는 타사을 사용하는 정적 라이브러리 (하지 오픈 소스) 정적 라이브러리 (예 : libA.a) 내에서 중복 심볼을 해결하고,이 libA.aCocoaLumberjack을 사용, 그것은 바로 자체에 CocoaLumberjack를 컴파일하고, CocoaLumberjack의 버전이 확실하지 않습니다.목표 - C/아이폰 OS는 -

이제 내 프로그램의 로그를 추적하는 데 CocoaLumberjack을 사용하고 싶습니다. CocoaLumberjack을 CocoaPods를 통해 설치하면 중복 된 심볼 오류가 발생합니다.

질문 :

  1. 숨길 수있는 방법은 엑스 코드 심볼 오류를보고하지 않도록 libA.a에서 CocoaLumberjack 상징이 있습니까?

  2. 기타 file logger 권장되는 라이브러리는 무엇입니까?

는 지금은 CocoaLumberjack의 소스와 대조, libA.a의 심볼을 통해 찾고 있어요, 나는, 나의 다음 단계에서만 CocoaLumberjack의 헤더 파일을 포함해야 사용 CocoaLumberjack libA.a의 버전을 확인하기 위해 폐쇄하고 내 계획. 그것은 작동해야하지만, 나는 이런 식으로하지 않습니다.

+0

그냥 업데이트. 마지막으로 libA.a의 저자에게 라이브러리에서 이전 버전의 CocoaLumberjack을 제거합니다. –

답변

0

정적 라이브러리에서 오브젝트 파일의 압축을 풀고 CocoaLumberpack 오브젝트 파일없이 다시 패키징 할 수 있습니다. 같은

뭔가 :

$ ar x libA.a 
$ rm cococaLumberjackFile*.o  # Whatever they are called 
$ ar cr libA.a *.o 

정적 라이브러리가 지방 (다중 CPU 아키텍처를 포함) 인 경우 다음이 훨씬 더 어려워지고 lipo과 많은 고통을 포함한다.

EDIT : 코드에서 CocoaLumberjack을 사용하고 libA.a으로 연결하십시오. 서드 파티 라이브러리 CocoaLumberjack의 개체를 모두 제공합니다.

+0

정말 멋집니다. 그러나'libA.a'도'CocoaLumberjack'을 사용하고있을 가능성이 있습니다. 제거한 경우'libA.a' 코드가 최신 버전의'CocoaLumberjack'에서 작동하는지 여부는 의심 스럽습니다 (메소드의 다양한 변경 때문에 , 등). 그러나 어떤 버전의'CocoaLumberjack'' libA.a'가 사용되었는지 알 수 있다면, 여러분의 방법을 사용하여'CocoaLumberjack' 소스를 프로젝트에 포함시킬 수 있습니다. –

+0

시도해보고 알아보십시오. – Droppy

+0

음 ... 작동하지 않습니다. 'ar : libA.a는 fat 파일입니다 (libtool (1) 또는 lipo (1) 및 ar (1)을 사용하십시오). ar : libA.a : 부적절한 파일 형식 또는 형식' –