1 升级Xcode 10后,编译崩溃报这个错误:Xcode 10 ld: library not found for -lstdc++.6
2 原因:
libstdc++ 在5年前被弃用了。Apple最新的平台不支持它。
3 解决办法一: 项目使用libc++而不是libstdc++
4 解决办法二:不使用libc++而是替换文件。在替换的过程中发现真机和模拟器的操作步骤不一致,需要分开设置。需要未升级的Xcode(9.4的版本)。
5 真机的包替换。替换步骤如下:
5.1需要旧的Xcode,右键显示包内容,在路径
5.2 libstdc.6.tbd是libstdc++.6.0.9.tbd的替身,右键 显示替身 就可跳回去, 所以可以copy libstdc++.6.0.9.tbd到路径下,然后复制,然后改名就ok
6 替换模拟器的包
6.1 会发现在Platforms下面不同平台的地址,进入 /Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib 目录下,按5的步骤替换
6.2 运行,我这里报: dyld:Libray not loaded:/usr/lib/libstdc++.6.dylib
屏幕快照 2018-09-25 下午3.28.45.png 6.3 找到旧版的/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime,右键显示包内容,找到/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libstdc++.6.0.9.dyli 屏幕快照 2018-09-25 下午4.25.49.png
6.4 把找到的libstdc++.6.0.9.dylib赋值到新版Xcode同样的目录下,右键复制copy到同目录下取名叫libstdc++.6.dylib和libstdc++.dylib,最终如图
屏幕快照 2018-09-25 下午4.27.44.png
6.5如果直接制作替身改名也会出错,所以要复制改名
网友评论