OpenSSL静态库太大了,任何替代方法或减小其大小的方法?

时间:2011-03-24 02:11:38

标签: c++ openssl static-libraries

我已经使用了OpenSSL 1.0的预构建静态库,但它使我的二进制文件太大,(在发布模式下将其大小增加大约800Kb)。

我不需要OpenSSL的大部分功能,比如BIO,我使用自己的套接字,因此在代码中我只使用了几个SSL_XXXXXXXXX调用(SSL_accept(3)或SSL_connect(3),SSL_read(3) )和SSL_write(3))

我唯一的要求是在Windows上支持带有winsock的SSLv2 / v3,以及用于客户端和服务器端的用于Linux的套接字(用于C ++)

有没有让OpenSSL更小(可能是我自己编译),或者,万不得已,任何其他好但更轻的SSL库满足我的要求? lib必须静态链接。

谢谢你

3 个答案:

答案 0 :(得分:4)

我想你想要这个页面,特别是关于代码大小的部分:

https://en.wikipedia.org/w/index.php?title=Comparison_of_TLS_implementations&oldid=585386367#Code_size_and_dependencies

(2013年12月)

更新:唉不再是更新页面的一部分。

答案 1 :(得分:3)

您可以尝试使用--ffunction-sections--fdata-sections自行编译,它告诉gcc将每个函数和全局数据变量放在对象内的单独部分中。

(使用静态库时,链接器将包含所需函数的整个对象从存档复制到应用程序。)

答案 2 :(得分:1)

OpenSSL确实有大量的编译时选项来控制构建的功能。我相信SSL功能使用下面的BIO,所以你仍然需要它们,但是你可能没有很多其他功能(比如你不会使用的密码,信封加密,S / MIME)支持...)。

我不确定它会减少多少二进制大小,但值得一试。