Xcode 10 ld: library not found for -lstdc++.6

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,右键显示包内容,在路径

/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib找到如图的文件copy到Xcode 10的同样的路径下
屏幕快照 2018-09-25 下午4.12.17.png

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如果直接制作替身改名也会出错,所以要复制改名

你可能感兴趣的:(Xcode 10 ld: library not found for -lstdc++.6)