【问题标题】:How to build OpenSSL and optimize it for executable size?如何构建 OpenSSL 并针对可执行文件大小对其进行优化?
【发布时间】:2012-08-21 14:59:23
【问题描述】:

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

  1. RSA 解密:使用 RSA_new、BN_bin2bn 初始化 RSA 密钥,使用 RSA_private_decrypt 进行 RSA 解密,并释放密钥。
  2. AES 解密:使用 EVP__DecryptInit( ... EVP_aes_128_cbc )、EVP_DecryptUpdate 和 EVP_DecryptFinal。

就是这样。尽管这种用法非常温和,但可执行文件大小超过 1MB,大约有 1,200 个不同的符号来自 OpenSSL 库。其中包括显然不在我的代码树中的函数,例如 ASN1_、SHA1_、EC_*、PKCS7 等。

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

有什么方法可以使用更小的 OpenSSL 来减小可执行文件的大小?

你。

【问题讨论】:

    标签: iphone openssl


    【解决方案1】:

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

    1. 使用您需要的唯一功能构建 OpenSSL。

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多