在GNU/Linux下使用GCC时,动态库(*.so)必然生成更小的二进制文件吗?
GCC静态库与动态库实验的体积疑惑
我在GNU/Linux系统上使用GCC开展静态库与动态库的实验。按认知,静态库会直接嵌入可执行文件,动态库则保持独立并在程序运行时加载,其优势之一是生成的二进制文件体积更小。但实际使用动态库编译时,我并未观察到明显的体积缩减:
我原本预期使用动态库编译出的最终二进制文件useString,大小会接近对应的目标文件useStringLib.o,但它的体积几乎与静态库编译出的二进制文件相同。
注:libstringfun.a与libstringfun.so基于相同代码(我编写的一组自定义字符串函数),useString是调用这些库的二进制程序。
构建动态库的命令如下:
gcc -fPIC -c lib_stringfun.c gcc lib_stringfun.o -shared -o libstringfun.so
链接动态库与二进制文件的命令为:
gcc -o useString useStringLib.o -L. -lstringfun
内容的提问来源于stack exchange,提问作者svs29122
相关产品推荐
相关产品推荐

