Closed liuzhiyi1992 closed 8 years ago
add $(inherited) to Other Linker Flag to fixed this problem
This is happening for me with the $(inherited) Other Linker Flag present. I'm using the OCMockito CocoaPod 3.0.2, Xcode 7.3.1, and CocoaPods 1.0.1. The build works when I compile to an actual device rather than a simulator.
Ld /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/DICE.app/PlugIns/DICETests.xctest/DICETests normal x86_64
cd /Users/stjohnr/sandbox/dice-ios
export IPHONEOS_DEPLOYMENT_TARGET=6.0
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk -L/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator -L/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/Expecta -L/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/OCHamcrest -L/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/OCMockito -L/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/Specta -F/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks -filelist /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Intermediates/DICE.build/Debug-iphonesimulator/DICETests.build/Objects-normal/x86_64/DICETests.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -mios-simulator-version-min=6.0 -bundle_loader /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/DICE.app/DICE -Xlinker -no_deduplicate -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lExpecta -lOCHamcrest -lOCMockito -lSpecta -framework Foundation -framework XCTest -ObjC -lExpecta -lOCHamcrest -lOCMockito -lSpecta -framework Foundation -framework XCTest -v -framework XCTest -fobjc-arc -fobjc-link-runtime -lPods-DICETests -Xlinker -dependency_info -Xlinker /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Intermediates/DICE.build/Debug-iphonesimulator/DICETests.build/Objects-normal/x86_64/DICETests_dependency_info.dat -o /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/DICE.app/PlugIns/DICETests.xctest/DICETests
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -bundle -bundle_loader /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/DICE.app/DICE -ios_simulator_version_min 6.0.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk -ObjC -o /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/DICE.app/PlugIns/DICETests.xctest/DICETests -L/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator -L/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/Expecta -L/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/OCHamcrest -L/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/OCMockito -L/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/Specta -filelist /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Intermediates/DICE.build/Debug-iphonesimulator/DICETests.build/Objects-normal/x86_64/DICETests.LinkFileList -rpath @executable_path/Frameworks -rpath @loader_path/Frameworks -no_deduplicate -objc_abi_version 2 -lExpecta -lOCHamcrest -lOCMockito -lSpecta -framework Foundation -framework XCTest -lExpecta -lOCHamcrest -lOCMockito -lSpecta -framework Foundation -framework XCTest -framework XCTest -lPods-DICETests -dependency_info /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Intermediates/DICE.build/Debug-iphonesimulator/DICETests.build/Objects-normal/x86_64/DICETests_dependency_info.dat -force_load /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a -framework Foundation -lobjc -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.3.0/lib/darwin/libclang_rt.ios.a -F/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks
ld: warning: directory not found for option '-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk/Developer/Library/Frameworks'
ld: warning: object file (/Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/libExpecta.a(EXPBlockDefinedMatcher.o)) was built for newer iOS version (7.0) than being linked (6.0)
... lots more of these
Undefined symbols for architecture x86_64:
"_MKTMock", referenced from:
_mock in ImportProcessSpec.o
_mock in FileOperationsSpec.o
_mock in HtmlReportTypeSpec.o
_mock in ParseJsonOperationSpec.o
_mock in ReportStoreSpec.o
_mock in UnzipOperationSpec.o
_mock in ZippedHtmlImportProcessSpec.o
...
(maybe you meant: _OBJC_METACLASS_$_MKTMockitoCore, _OBJC_METACLASS_$_MKTMockingProgress , _OBJC_IVAR_$_MKTMockingProgress._verificationMode , _OBJC_IVAR_$_MKTMockingProgress._ongoingStubbing , _OBJC_IVAR_$_MKTMockingProgress._testLocation , _OBJC_CLASS_$_MKTMockingProgress , _OBJC_IVAR_$_MKTMockingProgress._invocationMatcher , _OBJC_CLASS_$_MKTMockitoCore , _OBJC_IVAR_$_MKTMockitoCore._mockingProgress )
"_MKTMockProtocol", referenced from:
_mockProtocol in UnzipOperationSpec.o
_mockProtocol in ZippedHtmlImportProcessSpec.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Just for sanity I used lipo to check the library that is being linked:
> lipo -info /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/OCMockito/libOCMockito.a
input file /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/OCMockito/libOCMockito.a is not a fat file
Non-fat file: /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/OCMockito/libOCMockito.a is architecture: x86_64
as wells as nm to check the symbols:
> nm /Users/stjohnr/Library/Developer/Xcode/DerivedData/DICE-bsxbmnmnwjtxorfcorgdgsywpavi/Build/Products/Debug-iphonesimulator/OCMockito/libOCMockito.a | grep _MKTMock
U _OBJC_CLASS_$_MKTMockingProgress
0000000000000db0 S _OBJC_CLASS_$_MKTMockingProgress
0000000000000978 S _OBJC_IVAR_$_MKTMockingProgress._invocationMatcher
0000000000000968 S _OBJC_IVAR_$_MKTMockingProgress._ongoingStubbing
0000000000000970 S _OBJC_IVAR_$_MKTMockingProgress._testLocation
0000000000000980 S _OBJC_IVAR_$_MKTMockingProgress._verificationMode
0000000000000d88 S _OBJC_METACLASS_$_MKTMockingProgress
0000000000000a68 s l_OBJC_$_CLASS_METHODS_MKTMockingProgress
0000000000000ad0 s l_OBJC_$_INSTANCE_METHODS_MKTMockingProgress
0000000000000c70 s l_OBJC_$_INSTANCE_VARIABLES_MKTMockingProgress
0000000000000cf8 s l_OBJC_$_PROP_LIST_MKTMockingProgress
0000000000000d40 s l_OBJC_CLASS_RO_$_MKTMockingProgress
0000000000000a88 s l_OBJC_METACLASS_RO_$_MKTMockingProgress
U _OBJC_CLASS_$_MKTMockingProgress
00000000000004a0 S _OBJC_CLASS_$_MKTMockitoCore
0000000000000500 S _OBJC_IVAR_$_MKTMockitoCore._mockingProgress
00000000000004c8 S _OBJC_METACLASS_$_MKTMockitoCore
0000000000000568 s l_OBJC_$_CLASS_METHODS_MKTMockitoCore
00000000000005d0 s l_OBJC_$_INSTANCE_METHODS_MKTMockitoCore
0000000000000668 s l_OBJC_$_INSTANCE_VARIABLES_MKTMockitoCore
0000000000000690 s l_OBJC_$_PROP_LIST_MKTMockitoCore
00000000000006a8 s l_OBJC_CLASS_RO_$_MKTMockitoCore
0000000000000588 s l_OBJC_METACLASS_RO_$_MKTMockitoCore
0000000000000000 T _MKTMock
0000000000000050 T _MKTMockClass
00000000000001a0 T _MKTMockObjectAndProtocol
00000000000000a0 T _MKTMockProtocol
0000000000000120 T _MKTMockProtocolWithoutOptionals
U _OBJC_CLASS_$_MKTMockitoCore
I'm not sure where to go from here. Any help is much appreciated.
I just did a build with CocoaPods 0.39.0 and it worked. I'll have to look more into that.
It also seems to work with CocoaPods version 1.1.0.beta.1.
if setup with adding the framework download from https://github.com/jonreid/OCMockito/releases/
Occur: ld: warning: directory not found for option '-F"/Applications/Xcode.app/Contents/Developer/Library/Frameworks"'
Undefined symbols for architecture x86_64: "_HCDescribeMismatch", referenced from: -[MKTInvocationMatcher enumerateMismatchesOf:usingBlock:] in OCMockitoIOS(MKTInvocationMatcher.o) "_HCWrapInMatcher", referenced from: -[MKTInvocationMatcher matcherForArgument:] in OCMockitoIOS(MKTInvocationMatcher.o) "_HC_nilValue", referenced from: -[MKTInvocationMatcher matcherForArgument:] in OCMockitoIOS(MKTInvocationMatcher.o) "_OBJCCLASS$_HCStringDescription", referenced from: objc-class-ref in OCMockitoIOS(MKTPrinter.o) "_OBJCCLASS$_HCTestFailure", referenced from: objc-class-ref in OCMockitoIOS(MKTTestLocation.o) "_OBJCCLASS$_HCTestFailureReporterChain", referenced from: objc-class-ref in OCMockitoIOS(MKTTestLocation.o) "_OBJCCLASS$_OCMMacroState", referenced from: objc-class-ref in BusinessListPickerTest.o "_OBJCCLASS$_OCMockObject", referenced from: objc-class-ref in BusinessListPickerTest.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
And if setup with pod used:
Occur:
Undefined symbols for architecture x86_64: "_MKTMock", referenced from: _mock in SportTests.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)