如何构建OpenSSL并针对可执行文件大小进行优化?

时间:2012-08-21 14:59:23

标签: iphone openssl

我在我的应用程序中使用OpenSSL非常适度。 基本上,我只是做这两件事:

  1. RSA解密:使用RSA_new,BN_bin2bn初始化RSA密钥,使用RSA_private_decrypt进行RSA解密,然后释放密钥。
  2. AES解密:使用EVP__DecryptInit(... EVP_aes_128_cbc),EVP_DecryptUpdate和EVP_DecryptFinal。
  3. 这就是全部。尽管使用非常适度,但可执行文件大小超过1MB,OpenSSL库中有大约1,200个不同的符号。这些功能显然不在我的代码树中,例如ASN1_ ,SHA1 _ ,EC_ *,PKCS7等。

    我正在为Android Android和Windows链接OpenSSL的静态库。在移动平台上,足迹是一个问题。我的链接器应该省略未引用的函数,所以这些符号似乎以某种方式引用。

    有没有办法让较小的OpenSSL片段减少可执行文件的大小?

    Ú

1 个答案:

答案 0 :(得分:0)

来自OpenSSL的符号包括直接或间接引用的符号。 如果链接器遗漏了某些内容(因为它是自动化工具并且可能遗漏某些内容),那么您可以尝试以下操作:

  1. 使用您需要的唯一功能构建OpenSSL。
  2. 这将让您了解您从OpenSSL使用的依赖项。 为此,请从您需要的顶级功能开始。您将获得所需功能的链接器错误。然后包括那些功能。经过几次迭代,您将获得最小的OpenSSL库。

    当您需要使用其他功能时,这会出现严重问题。

    此外,您可以查看与优化相关的编译器选项,尤其是可执行文件大小。