2014-09-16 2 views
4

나는 아이폰 OS 8 SDK, 금속 프레임 워크와 결과 라이브러리 링크 쓰기 정적 라이브러리 구축 할 때 :정적 라이브러리

$ otool -arch all -fl <static library> 

... 
Load command 12 
519  cmd LC_LINKER_OPTION 
520 cmdsize 32 
521 count 2 
522 string #1 -framework 
523 string #2 Metal 
... 

을 나는이 UIKit을 통해 생각; 나는 그것을 직접적으로 연결하지 않고 '표준 라이브러리와 연결'을 '아니오'라고합니다. 이 프레임 워크가 존재하지 않기 때문에 iOS 7이 설치된 Xcode 5.1.1에서 문제가 발생합니다. Xcode 5를 사용하여 정적 라이브러리를 빌드하는 것은 금속과 연결되지 않지만 차라리 Xcode의 최신 프로덕션 릴리스로 빌드하고이 시점에서 어떤 점에서이 문제를 해결해야합니다. Xcode 6으로 어떻게 구축하고 Xcode 5 사용자를 위해이 문제를 해결할 수 있습니까?

참조 또한이 문제와 다른 개발자, 그는 단순히 그가 금속으로 연결하지 못했다 필요한 특정 프레임 워크를 사용,하지만 난 할 수 없어

이 나는 ​​UIKit와 연결해야하므로 : https://github.com/card-io/card.io-iOS-SDK/issues/66 https://github.com/CocoaPods/CocoaPods/issues/2457

+0

음, 어떻게 작동합니까? 정적 라이브러리는 링크 명령을 포함하지 않는 개체 파일입니다. 이게 ios8에서 새로운 것입니까? – trojanfoe

+0

자신은 확실하지 않지만 오브젝트 파일이로드 명령으로 링크해야하는 프레임 워크를 지정한다고 생각합니다. 그것은 -l 옵션이 무엇인지, 객체의로드 명령을 표시합니다. – Nick

+0

좋습니다. 흥미 롭습니다. '-framework Metal'의'LC_LINKER_OPTION'을 정적 라이브러리에 어떻게 도입했는지 말해 줄 수 있습니까? 내가 물어 보는 이유는 편집 할 수 있다면'-framework'를'-weak_framework'로 바꿀 수 있고, 이것이 당신의 문제를 해결할 수 있다는 것입니다. 여러분이 인용 한 쓰레드를 읽는 동안,'LC_LINKER_OPTION'은 정의되지 않은 심볼을 해결하기 위해서만 시작됩니다. 어쨌든 약한 링크처럼 들립니다. – trojanfoe

답변

6

Dave from card.io 여기에. 즉 위에서 언급 한 "다른 개발자"입니다. (Enable Modules (C and Objective-C)Link Frameworks Automatically a.k.a) CLANG_ENABLE_MODULESCLANG_MODULES_AUTOLINK : 당신을 위해 일한다

우리의 솔루션은 우리의 정적 라이브러리를 구축 할 때 NO이 빌드 설정으로 설정하는 것이 었습니다.

이 모듈 설정을 사용하지 않도록 라이브러리를 빌드하면 LC_LINKER_OPTION 명령이 모두 제거됩니다.

라이브러리를 사용하는 앱은 해당 모듈 설정을 사용하거나 사용하지 않도록 설정할 수 있습니다. UIKit.framework 등이 모듈을 통해 자동으로 또는 "링크 된 라이브러리"로 수동으로 포함되어야하는 앱 (라이브러리가 아님)입니다.

+0

감사합니다. Dave, 저는 솔루션으로 그걸 놓쳤습니다. Metal을 포함하는 우산 프레임 워크 대신 필요한 종속 프레임 워크 만 사용했다고 생각했습니다. 아마도 내가 네 이름으로도 언급 했어야 했어;) 건배 !! – Nick

+0

다행입니다. 도움이 될 수 있습니다! –

+1

@DaveGoldman - 빌드 프로세스에서 Xcode 빌드 설정에서 수동으로 설정하지 않고이 플래그를 어디에 설정합니까? podspec ('s.compiler_flags = '-CLANG_ENABLE_MODULES = NO', '-CLANG_MODULES_AUTOLINK = NO')에서 컴파일러로 전달하려고하면 인식되지 않습니다. – kraftydevil