【发布时间】:2021-10-30 06:55:18
【问题描述】:
我有一个需要使用 Libcrypto 的项目 - 我有两个版本的 Libcrypto(libcrypto.a(来自 OpenSSL 1.1.1)为 ARM64 构建)和(lcrypto.a(来自 OpenSSL 1.0.2)为 Intel) .撇开拥有两个不同版本是否是好习惯的问题不谈,我可以说,如果我包含 libcrypto.a,那么我可以在 M1 上构建和运行,并且它在 M1 上运行良好。如果我包含 lcrypto.a,那么我可以在 Intel 上构建和运行,它在 Intel 上运行良好。我不能做的是同时包含它们(链接器错误 - The linked library 'lcrypto.a' is missing one or more architectures required by this target: arm64.) - 如果我不能同时包含它们,那么我就无法构建一个胖二进制文件,而且我的应用程序不太有用!
我的问题是如何在我的项目中同时包含这两者 - 或者我在哪里可以获得(以及如何包含)Libcrypto 的胖版本?我看过这个https://github.com/balthisar/openssl-xcframeworks/releases 和这个https://developer.apple.com/forums/thread/670631 但我一点也不聪明。我认为我构建了一个胖二进制文件 - 但我认为我构建的胖二进制文件不适用于任何一种架构!
【问题讨论】:
-
使用命令 lipo 进行组合。 cutecoder.org/programming/compile-open-ssl-apple-silicon(创建通用库)。本教程的某些部分已经由 openssl 团队实现。
-
我很困惑为什么你的工件首先被称为
lcrypto.a。直观地说,这似乎是错误的,因为编译器/链接器在使用-lcrypto时永远不会找到该文件。 -
@MarekH 如果我可以将您的答案标记为正确,我会的。那只是票。谢谢。
-
这能回答你的问题吗? Build Multiarch OpenSSL on OS X
标签: macos openssl apple-silicon libcrypto