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

Iphone 如何构建OpenSSL并针对可执行文件大小对其进行优化?,iphone,openssl,Iphone,Openssl,我在我的应用程序中很少使用OpenSSL。 基本上,我只是在做这两件事: RSA解密:使用RSA_new、BN_bin2bn初始化RSA密钥,使用RSA_private_decrypt进行RSA解密,然后释放密钥 AES解密:使用EVP__DecryptInit(…EVP_AES_128_cbc)、EVP_DecryptUpdate和EVP_DecryptFinal 就这些。尽管使用量非常有限,但可执行文件的大小超过1MB,大约有1200个不同的符号来自OpenSSL库。这些函数显然不在我的代码

我在我的应用程序中很少使用OpenSSL。 基本上,我只是在做这两件事:

  • RSA解密:使用RSA_new、BN_bin2bn初始化RSA密钥,使用RSA_private_decrypt进行RSA解密,然后释放密钥
  • AES解密:使用EVP__DecryptInit(…EVP_AES_128_cbc)、EVP_DecryptUpdate和EVP_DecryptFinal
  • 就这些。尽管使用量非常有限,但可执行文件的大小超过1MB,大约有1200个不同的符号来自OpenSSL库。这些函数显然不在我的代码树中,比如ASN1、SHA1、EC、PKCS7等等

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

    是否有任何方法可以使用较小的OpenSSL片段来减少可执行文件的大小


    u、

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

  • 只使用所需的功能构建OpenSSL
  • 这将使您了解从OpenSSL使用的依赖关系。 为此,请从您需要的顶级函数开始。您将获得所需函数的链接器错误。然后包括这些函数。经过几次迭代,您将得到最小的OpenSSL库

    当您需要使用其他函数时,这会出现严重问题

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