MacOS 10.15 SDK未添加LC_VERSION_MIN_MACOSX的问题求助
解决MacOS 10.15 SDK编译时缺失LC_VERSION_MIN_MACOSX的问题
我之前也碰到过这个情况,核心原因是MacOS 10.15 SDK开始默认使用新的LC_BUILD_VERSION段作为版本标识,替代了旧的LC_VERSION_MIN_MACOSX,但Mac Catalyst框架提交要求必须包含后者。下面是具体的解决步骤:
1. 编译时强制添加LC_VERSION_MIN_MACOSX段
在编译命令中额外添加链接器参数,强制生成旧版本标识段。完整的编译命令如下:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ hello.cpp -o myapp -mmacosx-version-min=10.9 -Wl,-macosx_version_min,10.9
这里的-Wl,-macosx_version_min,10.9是把参数传递给链接器ld,让它强制生成LC_VERSION_MIN_MACOSX段,版本号和你指定的-mmacosx-version-min=10.9保持一致即可。
2. 验证修复效果
编译完成后,执行以下命令检查是否成功添加了目标段:
otool -l myapp | grep -A 5 LC_VERSION_MIN_MACOSX
如果输出类似下面的内容,就说明修复成功了:
cmd LC_VERSION_MIN_MACOSX cmdsize 16 version 10.9 sdk 10.15
补充说明
从MacOS 10.15 SDK开始,Apple引入了
LC_BUILD_VERSION作为更灵活的版本标识方式,默认情况下clang只会生成这个新段。但Mac Catalyst的提交审核仍然要求二进制文件包含旧的LC_VERSION_MIN_MACOSX信息,所以必须通过链接器参数手动强制保留。
内容的提问来源于stack exchange,提问作者Paulo Coutinho
相关产品推荐
相关产品推荐

