美文网首页
更新Xcode 10.1 clang: error: link

更新Xcode 10.1 clang: error: link

作者: 小毛纯一郎 | 来源:发表于2019-04-23 14:28 被阅读0次

    遇到一个特别奇怪的事,我的项目什么都没有改变过,我只是把Xcode更新了一下,也尝试了删除Xcode后重新下载,却也一直报错

    clang: error: linker command failed with exit code 1 (use -v  to see invocation)

    错误信息

    报错图

    一、 这一看,大家就明白是YingShiKit的这个包文件,或者 SDK 无法识别路径。所以了就一直查找关于三方及其路径的问题

    1. 第一就是如果是新添加的第三方库,且不是静态库

    然后找到 Build settings->Linking->Other Linker Flags

    将此属性修改成-all_load  或者 -ObjC ,这个视情况而定。总之可以多试几次。

    2.可能是这个静态库路径混乱导致的链接错误

    Build settings->Search Path->Library Search Paths  删除 或 添加静态库的相应路径。

    我找了找YingShiKit,却发现整个项目中,基本就没有这个类,或者相关这个文件夹,所以我删除了这个路径。

    二、但是项目还是跑不起来

        本身我还以为是真机和模拟器之间的差距问题的,因为项目中有个监控SDK,它只支持真机,但是我还是无论如何测试都还是报错。

    后来我又仔细想了想才发现 library not found for -lstdc++.6.0.9的问题,但是一般情况下你只是重装了一下Xcode,这种系统中的库文件,一般怎么可能就没有了啊,我还是怀着疑问搜索了一下,才发现还真的是被置换了。

    Xcode升级到Xcode10.0后,由于去掉陈旧的libstdc++库替换为libc++,libc++相对是苹果最新版的C++库,经过优化并全面支持C++11

    解决办法:

    下载libstdc++库,链接: https://pan.baidu.com/s/1Z2EHEqnQv8EASWZ3hKylAg 提取码: 829d 

    将 libstdc++、libstdc++.6、libstdc++6.0.9拷贝到Xcode的如下目录:

    1.真机环境:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/

    2.模拟器环境:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib

    总结: 造成问题难度的原因主要是有两个:我这里是有两个错误,第一个应该是之前使用过YingShiKit的三方(我是刚接手到的别人的项目),但是后来没有使用过,但是路径还存在。然后Xcode检查更严格。第二个,Xcode的更新陈旧的库被替换了,而项目中还在使用。

    相关文章

      网友评论

          本文标题:更新Xcode 10.1 clang: error: link

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