美文网首页
xcode 10 libstdc++ 6.0.9报错真机 &&

xcode 10 libstdc++ 6.0.9报错真机 &&

作者: zhangbo1992 | 来源:发表于2018-10-22 14:32 被阅读0次

    Xcode10升级后编译报错

    ld: library not found for -lstdc++.6.0.9
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    如果你的工程中如果依赖 libstdc++,无论是你本身的功能用 C++ 跨平台编写,还是你引入了某个 SDK 其内部依赖这个 libstdc++,都会导致整个工程编译不通过,报出 Undefined symbols

    原因是苹果在 Xcode10 和 iOS12 中移除了 libstdc++ 这个库,由 libc++ 这个库取而代之,苹果的解释是 libstdc++ 已经标记为废弃有5年了,建议大家使用经过了 llvm 优化过并且全面支持C++11的 libc++ 库。

    方案一

    拷贝缺失的libstdc++

    libstdc++.6.0.9.tbd.zip 解压,放到下面目录,拷贝过之后,真机就可以运行了

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
    

    注意:拷贝libstdc++之后真机就可以编译通过了,但在模拟器运行依然报错。解决方案如下:

    1. libstdc++_sim.zip 解压,放到目录
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/
    
    1. libstdc++.dylib_sim.zip 解压,放到目录
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/
    

    方案二

    如果你自己的业务模块使用了 libstdc++ ,那么就把模块代码重新调整为依赖 libc++ ,然后重新检查是否存在问题,重新编译

    如果你引用的三方库使用了 libstdc++ ,那么向三方库寻求支持,进行升级

    相关文章

      网友评论

          本文标题:xcode 10 libstdc++ 6.0.9报错真机 &&

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