在为UIKitForMac构建我的iPad应用程序时,我必须在项目中支持OpenSSL。目前,我收到这些错误。
针对Mac的UIKit构建,但是链接库'libssl.a'是为独立而构建的。您可能需要在目标编辑器中限制为此库链接的平台。
针对Mac的UIKit构建,但是链接库“ libcrypto.a”是为独立而构建的。您可能需要在目标编辑器中限制为此库链接的平台。
我正在阅读有关XCFrameworks的信息,但是Apple确实在这里没有提供太多信息。有没有人想出构建方案?
答案 0 :(得分:1)
在许多失败的尝试和Google搜索之后,令人沮丧的是,我成功地为Catalyst构建了openSSL 1.1.1g,编译了项目,链接了openSSL,并通过以下操作在Mac上启动了该应用程序:
<openSSL directory>/Configurations/10-main.conf
。向下滚动到"darwin64-x86_64-cc"
部分,我添加了第二条CFLAGS
行:CFLAGS => add(“-target x86_64-apple-ios-13.0-macabi”),
在openSSL目录中,执行./Configure darwin64-x86_64-cc -shared
。请注意,我已经看到了此Configure语句的其他多个版本,其中一些具有更多选项。该命令对我有用,但是我不确定所有其他变体的功能。您可能需要进一步研究。
执行make clean
清除以前的IOS构建中的所有对象
执行make
,此操作成功构建了openSSL。
在Xcode中->常规->“框架,库和嵌入式内容”下,我同时删除了libcrypto.a和libssl.a。这是关键步骤
< / li>将选项卡切换到“构建阶段”->“使用库链接二进制文件”,还要验证是否已从此部分中删除了两个归档文件。 (似乎在第5步中将其删除在第6步中也将其清除,但我不确定)。
回到General-> Frameworks,单击+
添加新条目,在弹出窗口的左下角选择“添加其他”,然后提供新建libcrypto的路径。一种。对libssl.a重复
在终端窗口中删除派生的数据(我不确定这是必要的,但是出于谨慎考虑,这样做了):
cd ~/Library/Developer/Xcode mv DerivedData DerivedData.old
步骤5-7至关重要。即使我移动和/或完全替换了以前的库,当我尝试在Xcode中进行构建时,我也会收到为MacOS Catalina构建的链接器错误,但尝试链接为MacOS x86构建的某些链接。
答案 1 :(得分:0)
评论中的解决方案对我不起作用。但是,我只是通过添加构建参数:-target x86_64-apple-ios13.0-macabi
并在-isysroot中定义Mac SDK来构建不同的库:以前使用的iOS,以及用于Catalyst的另一个库。在那之后,我只是有条件地为每个构建版本添加了每个库,并且可以正常工作。