静态链接libcrypto编译后二进制体积暴涨问题咨询
静态编译libssl3程序体积暴涨问题
我有一个仅调用少量加密函数的简单程序,动态链接编译生成的二进制文件仅约15KB,编译命令:
gcc -s -o crypt crypt.c -lcrypto
尝试静态链接编译时,生成的二进制文件却高达约4MB,编译命令:
gcc -s -o crypt crypt.c /usr/lib/x86_64-linux-gnu/libcrypto.a
此前在Debian 10、gcc 8、libssl1.1环境下编译同程序,生成的静态二进制仅约55KB;但在Debian 12、gcc 12、libssl3 3.0.9环境下,体积暴涨至原来的约200倍。
是否是静态编译时引入了libcrypto的全部函数而非仅实际调用的?或有其他原因导致体积过大?(需在无依赖库的极简系统运行该程序)
以下是动态编译版本的二进制文件ldd输出:
ldd crypt linux-vdso.so.1 (0x00007ffd72bdd000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd1680d0000) /lib64/ld-linux-x86-64.so.2 (0x00007fd168662000)
内容的提问来源于stack exchange,提问作者Martin Vegter
相关产品推荐
相关产品推荐

