美文网首页
编译旧项目遇到的ld: library not found fo

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

作者: 千若逸 | 来源:发表于2018-02-28 10:52 被阅读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文件运行项目,问题彻底解决!

    参考:

    相关文章

      网友评论

          本文标题:编译旧项目遇到的ld: library not found fo

          本文链接:https://www.haomeiwen.com/subject/pikbxftx.html