我已经使用了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必须静态链接。
谢谢你
答案 0 :(得分:4)
我想你想要这个页面,特别是关于代码大小的部分:
(2013年12月)
更新:唉不再是更新页面的一部分。
答案 1 :(得分:3)
您可以尝试使用--ffunction-sections
和--fdata-sections
自行编译,它告诉gcc将每个函数和全局数据变量放在对象内的单独部分中。
(使用静态库时,链接器将包含所需函数的整个对象从存档复制到应用程序。)
答案 2 :(得分:1)
OpenSSL确实有大量的编译时选项来控制构建的功能。我相信SSL功能使用下面的BIO
,所以你仍然需要它们,但是你可能没有很多其他功能(比如你不会使用的密码,信封加密,S / MIME)支持...)。
我不确定它会减少多少二进制大小,但值得一试。