在对2019年的WWDC公告感到兴奋之后,我尝试用Xcode 11.0测试版在MacOS上编译我现有的MacOS应用程序。不幸的是,它并没有像预期的那样进行。
Xcode说,我的静态库是为<未知>体系结构构建的:
为Mac构建UIKit,但是链接库'libssl.a‘是为<未知>构建的。您可能需要限制应该在目标编辑器中链接此库的平台。

但是,当我检查我的静态库时,我可以看到它们确实包含所需的体系结构x86_64:

我相信这个问题可能与Xcode Beta bug有关。有人对此有想法吗?
发布于 2019-07-02 21:23:02
单行修复:
git clone git@github.com:marcelosalloum/OpenSSL-for-iPhone.git --branch feature/mac-catalyst && \
cd OpenSSL-for-iPhone && \
./build-libssl.sh --archs="MacOSX_x86_64 i386 arm64 armv7s armv7"解释:
根据苹果的软件工程师edford的说法,我们需要为iOS平台构建二进制文件,目标是MacOSX并使用CFLAG -target x86_64-apple-ios13.0-macabi。这里有一个非常有启发性的讨论:https://forums.developer.apple.com/message/362577。
我已经分叉了OpenSSL for-iPhone 这里,并在分支feature/mac-catalyst中实现了MacCatalyst支持。
您可以通过指定MacCatalyst或targets来为targets构建它
选项--archs,用于OpenSSL <= 1.0.2:
git clone git@github.com:marcelosalloum/OpenSSL-for-iPhone.git --branch feature/mac-catalyst && \
cd OpenSSL-for-iPhone && \
./build-libssl.sh --archs="MacOSX_x86_64 i386 arm64 armv7s armv7" --version="1.0.2l"选项--targets用于OpenSSL >= 1.1.0
git clone git@github.com:marcelosalloum/OpenSSL-for-iPhone.git --branch feature/mac-catalyst && \
cd OpenSSL-for-iPhone && \
./build-libssl.sh --targets="ios-sim-cross-i386 ios64-cross-arm64 ios-cross-armv7s ios-cross-armv7 mac-catalyst-x86_64" --version="1.1.0"发布于 2020-04-16 20:39:45
以上所有的解决方案对我都不起作用,所以我继续努力为运行MacOSX10.15.4的系统修复它。
在我的例子中,上述解决方案不再适用于我:
no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.4.sdk' [-Wmissing-sysroot]我阅读了build-libssl.sh文件,注意到sdk版本是由脚本使用以下代码获取的:
xcrun -sdk macosx --show-sdk-version在我的系统中是这样的:
10.15.4使用查找器导航到该位置:
'/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/告诉我确实没有MacOSX10.15.4.sdk。然而,有一个MacOSX10.14.sdk。我确实利用这些知识提出了以下解决方案:
OpenSSL版本<= 1.0 (1.0.2l)
<= 1.0版本应该只使用--arch,而不是--目标!
git clone git@github.com:marcelosalloum/OpenSSL-for-iPhone.git --branch feature/mac-catalyst && \
cd OpenSSL-for-iPhone && \
./build-libssl.sh --arch="MacOSX_x86_64 i386 arm64 armv7s armv7 tv_x86_64 tv_arm64" --macosx-sdk=10.15 --version="1.0.2l"OpenSSL版本>= 1.1 (1.1.0)目前没有功能
版本>= 1.1应该只使用目标,而不是arch!
git clone git@github.com:marcelosalloum/OpenSSL-for-iPhone.git --branch feature/mac-catalyst && \
cd OpenSSL-for-iPhone && \
./build-libssl.sh --targets="mac-catalyst-x86_64 ios-sim-cross-i386 ios64-cross-arm64 ios-cross-armv7s ios-cross-armv7 tvos-sim-cross-x86_64 tvos64-cross-arm64" --macosx-sdk=10.15 --version="1.1.0" -vhttps://stackoverflow.com/questions/56479972
复制相似问题