【问题标题】:How does one build a OpenSSL library for Project Catalyst?如何为 Project Catalyst 构建 OpenSSL 库?
【发布时间】:2019-10-20 21:04:51
【问题描述】:

在为 UIKitForMac 构建我的 iPad 应用程序时,我必须在我的项目中支持 OpenSSL。目前,我收到这些错误。

为 Mac 的 UIKit 构建,但链接库“libssl.a”是为独立构建的。您可能需要在目标编辑器中限制应链接此库的平台。

为 Mac 的 UIKit 构建,但链接库“libcrypto.a”是为独立构建的。您可能需要在目标编辑器中限制应链接此库的平台。

我正在阅读有关 XCFrameworks 的信息,但 Apple 确实没有在这里提供太多信息。有人想出构建场景吗?

【问题讨论】:

标签: ios macos ipad openssl uikit


【解决方案1】:

cmets 中的解决方案对我不起作用。但是,我只是通过添加构建参数-target x86_64-apple-ios13.0-macabi 并在 -isysroot 中定义 Mac SDK 来构建不同的库:我以前的 iOS 和 Catalyst 的另一个库。之后,我只是有条件地为每个构建版本添加每个库,它就可以工作了。

【讨论】:

  • 您能否提供更多关于如何从源代码构建的详细信息?
  • 对于 Catalyst(抱歉,换行符在 cmets 中似乎不起作用,但我希望它仍然足够清楚):make clean && make dclean export CC="cc -fembed-bitcode -arch x86_64h -miphoneos-version-min=13.0 -isysroot "$CROSS_TOP_CAT"/SDKs/"$CROSS_SDK_CAT" -target x86_64-apple-ios13.0-macabi" ./configure $i $OPTIONS make depend make all
【解决方案2】:

在多次失败的尝试和 Google 搜索之后,我感到越来越沮丧,但我成功地为 Catalyst 构建了 openSSL 1.1.1g,编译了我的项目,链接了 openSSL,并通过执行以下操作在我的 Mac 上启动了该应用程序:

  1. 我使用了之前为 IOS 提取和构建 openSSL 的目录。
  2. 按照说明here,我编辑了<openSSL directory>/Configurations/10-main.conf。向下滚动到 "darwin64-x86_64-cc" 部分,我添加了第二条 CFLAGS 行:

CFLAGS => add("-target x86_64-apple-ios13.0-macabi"),

  1. 在openSSL 目录中,执行./Configure darwin64-x86_64-cc -shared 请注意,我已经看到了这个Configure 语句的其他几个版本,其中一些有更多的选项。该命令对我有用,但我不确定所有其他变体的作用。您可能需要进一步研究。

  2. 执行make clean清除之前IOS构建的所有对象

  3. 执行make 这样就成功构建了openSSL。

  4. 在 Xcode 中,在 -> 常规 -> “框架、库和嵌入式内容”下,我删除了 libcrypto.a 和 libssl.a 这是一个关键步骤

  5. 将选项卡切换到构建阶段 -> 将二进制文件与库链接,确认这两个存档也已从此部分中删除。 (似乎在第 5 步中删除它们也会在第 6 步中清除它们,但我不确定)。

  6. 返回General -> Frameworks,点击+添加新条目,在弹出窗口的左下角选择“add other”,然后提供新构建的libcrypto.a的路径。对 libssl.a 重复此操作

  7. 在终端窗口中删除派生数据(我不确定这是否必要,但出于谨慎考虑):

cd ~/Library/Developer/Xcode
mv DerivedData DerivedData.old
  1. 在 Xcode 中构建项目。这已成功完成。

第 5-7 步非常关键。即使我移动和/或完全替换了以前的库,但当我尝试在 Xcode 中构建时,我会收到我为 MacOS Catalina 构建但试图链接为 MacOS x86 构建的东西的链接器错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 2021-05-02
    • 2012-01-12
    • 2021-03-31
    • 2016-12-29
    • 2021-10-30
    相关资源
    最近更新 更多