编译旧项目遇到的ld: library not found fo

2018-02-28  本文已影响16人  千若逸

在Github上下载了一个三四年前的项目,Podfile是那种老式的,内容很简单:

platform :ios, '6.0'
pod 'xxxxxx'

在当前CocoaPods普遍使用1.0+版本时(最新的为1.4版本),上面的Podfile需要修改成这样的:

platform :ios, '9.0'
def pods
  pod 'xxxx'
end
target 'yourtargetname' do
  pods
end

执行pod install后生成xcworkspace项目文件,从这个项目文件打开项目,编译会报错“ld: library not found for -lPods”。
一般的方案是:
进入target的 Build Phases- Link binary Library,找到libPods.a,如果是红色的,删除,即可——记得我以前是用这个方案解决的

或者
Build Setting > Other Linker Flag: Try to change wherever $(TARGET_BUILD_DIR) to $(BUILT_PRODUCTS_DIR).

但是今天用了上面两个方法都解决不了。
其实出现这个问题肯定是新老版本Cocoapods与Podfile兼容出了问题,最彻底的办法只能是先移除老版的pod关联内容,再重新用最新的pod来pod install。

经常用pod install命令,那么是不是也有pod uninstall呢?答案是没有。

不过,好在有第三方解决方案:pod deintegratepod clean:

$ sudo gem install cocoapods-deintegrate cocoapods-clean
$ pod deintegrate
$ pod clean
$ rm Podfile //因为我们是清理旧版本pod数据,所以这一步不是必需的

如果你是要在项目中彻底移除Cocoapods,上面的方法也是你需要的。

执行完上面前三步命令后,我们的项目就变成一个干净的无pod项目,重新执行pod install后打开xcworkspace文件运行项目,问题彻底解决!

参考:

上一篇下一篇

猜你喜欢

热点阅读