2014-06-05 1 views
0

iOS 응용 프로그램에서 정적 라이브러리를 사용하려고합니다. 그것은 모든 것을 올바르게 수행 한 것으로 보이지만 여러 개의 "아키텍처 i386에 대한 정의되지 않은 심볼"오류가 발생합니다 (SO question). 그것은 몇 개의 파일에서 발견필요한 메소드 구현을 포함하는 정적 라이브러리를 찾는 방법은 무엇입니까?

#!/bin/bash 
for filename in /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/lib*.a; do 
    echo " $filename:" 
    nm "$filename" | grep getMemBufferCopy 
done 

: 필요한 방법이 (메소드 코드가 포함되어 정적 라이브러리) 구현 어디를 확인하기로 결정했습니다

MBA-Anton:StaticLibraryUsage2 asmirnov$ ./find_method 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMAArch64AsmParser.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMAArch64AsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMAArch64CodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMAArch64Desc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMAArch64Disassembler.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMAArch64Info.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMAArch64Utils.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMARMAsmParser.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMARMAsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMARMCodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMARMDesc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMARMDisassembler.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMARMInfo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMAnalysis.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMAsmParser.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMAsmPrinter.a: 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMBitReader.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMBitWriter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMCodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMCore.a: 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMCppBackendCodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMCppBackendInfo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMDebugInfo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMExecutionEngine.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMHexagonAsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMHexagonCodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMHexagonDesc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMHexagonInfo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMIRReader.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMInstCombine.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMInstrumentation.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMInterpreter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMJIT.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMLTO.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMLinker.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMC.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMCDisassembler.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMCJIT.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMCParser.a: 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMSP430AsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMSP430CodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMSP430Desc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMSP430Info.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMipsAsmParser.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMipsAsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMipsCodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMipsDesc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMipsDisassembler.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMMipsInfo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMNVPTXAsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMNVPTXCodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMNVPTXDesc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMNVPTXInfo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMObjCARCOpts.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMObject.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMOption.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMPowerPCAsmParser.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMPowerPCAsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMPowerPCCodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMPowerPCDesc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMPowerPCInfo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMR600AsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMR600CodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMR600Desc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMR600Info.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMRuntimeDyld.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMScalarOpts.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSelectionDAG.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSparcCodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSparcDesc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSparcInfo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSupport.a: 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
000000b0 T __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSystemZAsmParser.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSystemZAsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSystemZCodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSystemZDesc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSystemZDisassembler.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMSystemZInfo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMTableGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMTarget.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMTransformUtils.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMVectorize.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMX86AsmParser.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMX86AsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMX86CodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMX86Desc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMX86Disassembler.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMX86Info.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMX86Utils.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMXCoreAsmPrinter.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMXCoreCodeGen.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMXCoreDesc.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMXCoreDisassembler.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMXCoreInfo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMipa.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLLVMipo.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libLTO.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangARCMigrate.a: 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangAST.a: 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangASTMatchers.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangAnalysis.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangBasic.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangCodeGen.a: 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangDriver.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangDynamicASTMatchers.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangEdit.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangFormat.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangFrontend.a: 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangFrontendTool.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangIndex.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangLex.a: 
     U __ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_ 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangParse.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangRewriteCore.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangRewriteFrontend.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangSema.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangSerialization.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangStaticAnalyzerCheckers.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangStaticAnalyzerCore.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangStaticAnalyzerFrontend.a: 
    /Users/asmirnov/Documents/dev/src/llvm_34_ios_i386_installed_/lib/libclangTooling.a: 

그래서 그것을 찾을 것를 사용하지만 구현 . 내가 어떻게 제대로 할 수 있습니다 (.a 파일을 메소드 impl로 찾는다)? 내가

nm --help 

를 입력하면

+0

모르겠지만'--extern-only'와'nm'의'--defined-only' 옵션은 여러분이 찾고있는 것과 같습니다. –

+0

'man nm'은 그 옵션에 대해 아무것도 말하지 않습니다. – 4ntoine

답변

0

내가 얻을 :

 
Usage: nm [option(s)] [file(s)] 
List symbols in [file(s)] (a.out by default). 
The options are: 
    -a, --debug-syms  Display debugger-only symbols 
    -A, --print-file-name Print name of the input file before every symbol 
    -B      Same as --format=bsd 
    -C, --demangle[=STYLE] Decode low-level symbol names into user-level names 
          The STYLE, if specified, can be `auto' (the default), 
          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java' 
          or `gnat' 
     --no-demangle  Do not demangle low-level symbol names 
    -D, --dynamic   Display dynamic symbols instead of normal symbols 
     --defined-only  Display only defined symbols 
    -e      (ignored) 
    -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd', 
          `sysv' or `posix'. The default is `bsd' 
    -g, --extern-only  Display only external symbols 
    -l, --line-numbers  Use debugging information to find a filename and 
          line number for each symbol 
    -n, --numeric-sort  Sort symbols numerically by address 
    -o      Same as -A 
    -p, --no-sort   Do not sort the symbols 
    -P, --portability  Same as --format=posix 
    -r, --reverse-sort  Reverse the sense of the sort 
     --plugin NAME  Load the specified plugin 
    -S, --print-size  Print size of defined symbols 
    -s, --print-armap  Include index for symbols from archive members 
     --size-sort  Sort symbols by size 
     --special-syms  Include special symbols in the output 
     --synthetic  Display synthetic symbols as well 
    -t, --radix=RADIX  Use RADIX for printing symbol values 
     --target=BFDNAME Specify the target object format as BFDNAME 
    -u, --undefined-only Display only undefined symbols 
    -X 32_64    (ignored) 
    @FILE     Read options from FILE 
    -h, --help    Display this information 
    -V, --version   Display this program's version number 

nm: supported targets: elf64-x86-64 elf32-i386 elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex 
Report bugs to . 

이것은 리눅스 데스크탑 컴퓨터에 있습니다.

+0

MBA-Anton : StaticLibraryUsage2 asmirnov $ nm --help 오류 : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm : 유효하지 않은 인수 - 사용법 : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm [-agnopruUmxjlfAP [segname sectname] [-] [-t 형식] [[-arch ]. ..] [file ...] – 4ntoine

+0

@ 4ntoine, 소원 내가 더 너를 도울 수는있어.하지만 내가 할 수 있다고 생각하지 않아. –

관련 문제