use_frameworks!遇到了library not found for -lXXXXX 的解决方法

最近项目要添加新功能了,真是懒的写,可是既然要写,就要从中学到点新东西。Swift已经发布了两年了,我居然还没用过,太不应该了。

项目开动啦,还是用cocoapods引入几个swift库先。一上来就遇到问题!

Screen Shot 2016-09-17 at 6.21.59 PM.png

没问题,太好解决的了,cocoapods的提示都已经说明了解决办法,在podfile里直接加上use_frameworks!就行了

Screen Shot 2016-09-17 at 6.29.41 PM.png

为什么使用swift库要加这句呢,原来Apple不允许build包含swift静态库了。而cocoapods使用了frameworks方式来集成swift库,就是use_frameworks!这句话了。

参考:http://blog.cocoapods.org/CocoaPods-0.36/

好了,应该没什么问题了吧,command+B,编译一下试试。

Screen Shot 2016-09-17 at 5.43.02 PM.png

这个linker error太常见了,开始以为一下就能搞定了,没想到弄了好几天,汗!明显是链接器没有找到AFNetworking的这个库嘛。看到一般解决这个问题是三种方法

第一种:点击 XCode 工程文件,在 Build Phases 中查看 “ Link binary With Libraries”,奇怪并没有链接AFNetworking。(一般应该能发现有一到数个的条目是用红色字体来显示的,这样才导致链接不到,应该是Pods的target集合所有库生成一个pod.a或者pod.framework)


Screen Shot 2016-09-17 at 7.02.16 PM.png

第二种:在工程的 Target 中选中要执行编译的target,然后 “get info”,打开 Build Settings页面,在 “ Library Search Path” 中添加缺失链接库的所在文件夹的路径。(这个因为是cocoapods管理的所需的库,一般到是没什么问题,是由$(inherited)搞定的,这个后面会讲到)

第三种:关闭XCode,再用pod install 命令重新安装,成功后再打开XCode编译项目。对我来说试了好多次都不行,完全是死马当活马医啦!

这样搞了好几天,还是不行。于是深刻感觉到cocoapods使用起来是真方便,可是一但出问题,而且不太常见的话,就会被迫要懂一点XCode build的过程了。只能继续分析error message了,经常看见use -v to see invocation,这个命令行参数-v该怎么加,我还是不懂,要是有人知道,千万要告诉我,谢谢啦!还是看下build error先啦。

Screen Shot 2016-09-17 at 7.24.29 PM.png

看了好久终于发现点蛛丝马迹。“-ObjC -lAFNetworking -lARGenericTableViewController -lFLKAutoLayout -lFTPopOverMenu -lFontAwesome -lFontAwesomeIconFactory -lJLRoutes -lMBProgressHUD -lMantle -lMasonry -lObjectiveSugar -lSDWebImage -lSLExpandableTableView -lUIAlertView+Blocks -lUICKeyChainStore -lUITextView+Placeholder”。怎么会这样,不是说用frameworks替代了静态库了吗,看来问题出在这里了,编译的时候XCode还是想去链接AFNetworking的静态库。一直就觉得是use_frameworks导致的,就去查看cocoapods生成的.xcconfig文件。


Screen Shot 2016-09-17 at 5.23.13 PM.png

仔细看发现其中并没有-lAFNetworking这样的一个LDFLAGS,在stackoverflow上找了好久才偶然发现问题出在Build Settings里Other Linker Flags


Screen Shot 2016-09-17 at 10.10.57 PM.png

Screen Shot 2016-09-17 at 10.12.59 PM.png

原来项目从纯OC过来的,从前cocoapods生成的一些-l"AFNetworking"之类的flags还在,问题就在这里了,其实解决方法直接删掉,留下$(inherited)就行了,那删掉了XCode还知道怎么链接吗,其实是知道的,关键就在inherited上,原来xcode的这些config项存在继承链。Resolved <- Target <- xcconfig <- Project <- iOS Default。顺序是从右到左,cocoapods生成的xcconfig文件优先级高于在target里的设置。

困扰了好几天,感觉cocoapods虽然帮助我们很多,我们不用像写makefile那样麻烦,可是好像失去了好多对项目的掌控力,还是要懂一点编译过程比较好。

还是学到了好多东西,光从库方面讲,发现到XCode链接需要经过好几个阶段,首先要找到库的头文件路径,在build settings里的Header Search Paths设置


Screen Shot 2016-09-17 at 9.35.39 PM.png

然后去找library的位置,在build settings里的Library Search Paths设置


Screen Shot 2016-09-17 at 9.21.00 PM.png

如果编译出错的话build phases的link binary with library里的Pods项目就会出现红字(不过好像使用了framework之后,Pods的framework还是照常生成,因为是动态链接,记得静态链接的时候生成的.a文件的确是红色的)
Screen Shot 2016-09-17 at 7.02.16 PM.png

最后XCode要链接哪些库是在Other Linker Flags里设置的


Screen Shot 2016-09-17 at 10.12.59 PM.png

同时这些设置cocoapods又把这些设置集中在类似父类的xcconfig文件中


Screen Shot 2016-09-17 at 9.30.46 PM.png

好了,写的好长,其实没什么内容,不过我花了这么长时间搞定的,不写长点不甘心呐。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容