- iphone/
- Iphone 如何构建OpenSSL并针对可执行文件大小对其进行优化?
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库
当您需要使用其他函数时,这会出现严重问题
此外,您还可以查看与优化相关的编译器选项,尤其是可执行文件大小