我已经成功使用AWS SDK框架,现在我正在尝试将静态库导入为自制框架,与我的其他几个项目共享代码。
问题是:为了导入我的静态库,我need to add -ObjC
链接器标志以便导入库,但每当我添加该链接器标志时,AWS 就吓坏了并且给了我40多个红色编译错误。
我对链接器标志和库导入完全不熟悉,所以老实说我真的不知道从哪里开始。我已经完成了一些研究,但我能找到的最好的主要建议是我可以使用-force_load
而不是-ObjC
,但这似乎需要在Build中手动添加每个“.m”文件阶段部分,我的库包含数百个这样的文件。
是否有一个更简单的解决方案来解决这个问题,而不是添加其中的每个文件,以便我可以使用-force_load
?我怎样才能获得AWK SDK以及导入我的库以便一起玩的需要?
编辑:根据评论中的建议,这是我添加-ObjC
链接器标志时出现的错误。如果没有该标志(并且没有添加静态库),该应用程序将成功编译AWSiOSSDKv2
框架。但添加链接器标志(据我所知,静态库需要,但即使在添加该库之前)也会立即导致:
[已删除代码以符合字符数限制]
编辑2:根据松田洋介的回答,我添加了libsqlite3.dylib
,我失踪了。现在先前的错误已经消失,但我有几十(数百?)个“重复符号”行,以单个红色“链接器命令失败并退出代码1”错误结束。 (我会把它们全部包括在内,但是,他们非常热闹,我的帖子是73,111个字符,超过了30,000个字符限制。)
有趣的是,它们似乎来自框架本身要求引起的冲突(例如,AWS框架中的AWSCore
需要Bolts
框架,但它们似乎与一堆冲突重复的符号?)。
而且,和以前一样,只需从链接器标志中删除-ObjC
即可让应用程序正常并成功编译。
duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods_Reachability in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Pods-Reachability-dummy.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Pods-Reachability-dummy.o)
duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods_Reachability in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Pods-Reachability-dummy.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Pods-Reachability-dummy.o)
duplicate symbol _OBJC_IVAR_$_Reachability.reachabilityRef in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_IVAR_$_Reachability.reachableOnWWAN in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _kReachabilityChangedNotification in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_IVAR_$_Reachability.reachabilitySerialQueue in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_IVAR_$_Reachability.reachableBlock in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_IVAR_$_Reachability.unreachableBlock in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_IVAR_$_Reachability.reachabilityObject in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_CLASS_$_Reachability in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_METACLASS_$_Reachability in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Reachability.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/Reachability.framework/Reachability(Reachability.o)
duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods_XMLDictionary in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Pods-XMLDictionary-dummy.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(Pods-XMLDictionary-dummy.o)
duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods_XMLDictionary in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(Pods-XMLDictionary-dummy.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(Pods-XMLDictionary-dummy.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._collapseTextNodes in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._stripEmptyNodes in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._trimWhiteSpace in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._alwaysUseArrays in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._preserveComments in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._wrapRootNode in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._attributesMode in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._nodeNameMode in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._root in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._stack in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_XMLDictionaryParser._text in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_CLASS_$_XMLDictionaryParser in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_METACLASS_$_XMLDictionaryParser in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(XMLDictionary.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/XMLDictionary.framework/XMLDictionary(XMLDictionary.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._databasePath in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._openResultSets in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._db in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._logsErrors in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._crashOnErrors in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._maxBusyRetryTimeInterval in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._startBusyRetryTime in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._cachedStatements in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._dateFormat in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._isExecutingStatement in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._traceExecution in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._shouldCacheStatements in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _FMDBExecuteBulkSQLCallback in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._inTransaction in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _FMDBBlockSQLiteCallBackFunction in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._openFunctions in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabase._checkedOut in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMStatement._statement in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMStatement._inUse in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMStatement._useCount in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMStatement._query in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_CLASS_$_FMDatabase in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_METACLASS_$_FMDatabase in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_CLASS_$_FMStatement in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_METACLASS_$_FMStatement in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabase.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabase.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._path in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._lockQueue in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._databaseInPool in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._databaseOutPool in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._openFlags in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._delegate in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_IVAR_$_FMDatabasePool._maximumNumberOfDatabasesToCreate in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
duplicate symbol _OBJC_CLASS_$_FMDatabasePool in:
/Users/kornferry/Documents/Repositories/kf4ddemo/AWSiOSSDKv2.framework/AWSiOSSDKv2(FMDatabasePool.o)
/Users/kornferry/Documents/Repositories/kf4ddemo/FMDB.framework/FMDB(FMDatabasePool.o)
[And on and on and on, ending with...]
ld: 260 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
答案 0 :(得分:1)
适用于iOS的AWS Mobile SDK依赖于libsqlite3.dylib
,libz.dylib
和SystemConfiguration.framework
,但您未提供这些内容。这是错误消息的原因。 AWS Mobile SDK for iOS Developer Guide的这一部分列出了必要的依赖关系。