我使用this github存储库为iOS构建了OpenSSL。不幸的是,内置库的大小为44 MB。这远远不够。
我只需要将OpenSSL用于Diffie-Hellman密钥交换实现。如果我只从中提取Diffie-Hellman部分,我认为库的大小将会大大减少。任何人都可以告诉我这是否可行以及如何做到这一点?
答案 0 :(得分:1)
有人能告诉我这是否可行以及我该怎么做?
好吧,我从未见过以这种方式配置的OpenSSL,所以我不确定你能达到的目标有多接近。但您要找的是no-xxx
的各种Configure
选项。我也不知道它们的全面清单。
要添加额外的皱纹,您只需要libcrypto
(提供密码术,如Diffie-Hellman),而不是libssl
(它提供更高级别的SSL / TLS功能)。
另一种方法是减少对存档或库的磁盘大小的担心,并重点在将库链接到程序时剥离不需要的部分。为此,请执行以下操作:
CFLAGS += -ffunction-sections -fdata-sections
LDFLAGS += -Wl,-dead_strip
这将允许链接器删除最终二进制文件中未使用的任何代码或数据。由于您只使用Diffie-Hellman(以及相关函数,如Big Integers),因此这是唯一应该出现的内容。
(在Linux上,您将使用LDFLAGS += -Wl,--gc-sections
)。
OpenSSL并不总是尊重您的CFLAGS
和LDFLAGS
。如果是这种情况,您可能需要在构建OpenSSL for iOS时为Configure
添加特殊规则。为此,请参阅OpenSSL wiki上Compilation and Installation | Using RPATHs处对RPATH的讨论。