首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode 11不承认静态库的体系结构: MacCatalyst (又名UIKitForMac)

Xcode 11不承认静态库的体系结构: MacCatalyst (又名UIKitForMac)
EN

Stack Overflow用户
提问于 2019-06-06 14:44:41
回答 2查看 6.1K关注 0票数 6

在对2019年的WWDC公告感到兴奋之后,我尝试用Xcode 11.0测试版在MacOS上编译我现有的MacOS应用程序。不幸的是,它并没有像预期的那样进行。

Xcode说,我的静态库是为<未知>体系结构构建的:

为Mac构建UIKit,但是链接库'libssl.a‘是为<未知>构建的。您可能需要限制应该在目标编辑器中链接此库的平台。

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

我相信这个问题可能与Xcode Beta bug有关。有人对此有想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-02 21:23:02

单行修复:

代码语言:javascript
复制
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支持。

您可以通过指定MacCatalysttargets来为targets构建它

选项--archs,用于OpenSSL <= 1.0.2:

代码语言:javascript
复制
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

代码语言:javascript
复制
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"
票数 8
EN

Stack Overflow用户

发布于 2020-04-16 20:39:45

以上所有的解决方案对我都不起作用,所以我继续努力为运行MacOSX10.15.4的系统修复它。

在我的例子中,上述解决方案不再适用于我:

代码语言:javascript
复制
no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.4.sdk' [-Wmissing-sysroot]

我阅读了build-libssl.sh文件,注意到sdk版本是由脚本使用以下代码获取的:

代码语言:javascript
复制
xcrun -sdk macosx --show-sdk-version

在我的系统中是这样的:

代码语言:javascript
复制
10.15.4

使用查找器导航到该位置:

代码语言:javascript
复制
'/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,而不是--目标!

代码语言:javascript
复制
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!

代码语言:javascript
复制
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" -v
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56479972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档