iOS-Xcode暂时解决libstdc++问题
1.参考
适配Xcode10与iOS12之libstdc++问题
解决Xcode10 library not found for -lstdc++ 找不到问题
libstdc++适配Xcode10与iOS12(亲测有效)
2.实战
问题描述
手中的项目,在Mac系统升级或Xcode升级后,编译报错,报错信息为
Reason: no suitable image found. Did find:
/usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator
原因是XCode10 和 iOS12 中移除了 libstdc++ 这个库。如果项目依赖libstdc++,或者项目依赖的第三方库有依赖libstdc++。解决办法也很简单
如果是自己的项目有依赖libstdc++
在项目TARGETS-BulidPhases-Link Binary With Libraires中去掉libstdc++,添加上libc++即可
如果是项目依赖的第三方库有依赖libstdc++
需要更新第三方库版本即可。如果第三方的最新版本依旧依赖libstdc++,尽快反馈给第三方库的开发方。
但是还是会有别的原因不能去掉libstdc++
比如第三方库已经很久没有维护了,或者项目中使用的三方库版本比较老,贸贸然更新版本对项目影响比较大,时间又很紧,这里有一个暂时的解决办法。但是最终项目还是要更新依赖库的。
解决方案
在Xcode中添加stdc++.6.0.9文件
文件下载
添加文件
解压下载后的文件,cd到解压文件目录,直接编译install.sh,编译后重启Xcode即可。真机和模拟器均可正常运行
./install.sh
####文件下载
stdc++.6.0.9下载链接:https://pan.baidu.com/s/1s8-DJ1l6jtOTi9-nkiIPmQ 密码: avet
文件下载后解压,并解压模拟器目录和真机目录下的文件
####文件添加
#####模拟器添加
在终端输入
>open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
打开Xcode的模拟器目录,将解压后模拟器目录下的libstdc++.6.0.9.tbd文件copy到Xcode的模拟器目录usr/lib下
#####真机添加
~~在终端输入
>open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib
打开Xcode的真机目录,将解压后真机目录下的libstdc++.6.0.9.tbd文件copy到Xcode的真机目录usr/lib下
重启Xcode,重新运行app即可
####注意
如果Xcode是12以上版本,注意还是不要使用模拟器运行app了,还是使用真机运行吧。我这里虽然这样处理了,模拟器运行还是会报这个错,真机运行还可以。