我怀疑同一个程序如何在没有共享库的情况下为共享库提供不同大小的程序。?
example :
case 1 ( with out using libraries )
$ls -l a.out // in this program i didnt use shared libraries .
-rwxrwxr-x 1 friend 15555 aug 3 a.out
$ size a.out
text data bss dec
4000 4555 0 8555
case 2 : ( using libraries )
$ls -l a.out // in this program used shared libraries .
-rwxrwxr-x 1 friend 8000 aug 3 a.out
$ size a.out
text data bss dec
2000 2888 0 4888
注意:我所采取的所有值都是近似值,以显示其在第二种情况下给出的酒糟尺寸。所以价值可能会有所不同,但实际上它会小于案例1。
答案 0 :(得分:1)
我相信在第一种情况下,链接器将库静态链接到可执行文件中,从而使其更大。但是,这样做的一个优点是程序的用户不需要确保它们具有程序使用的某些库,因为库是打包在已编译的二进制文件中的。
在第二种情况下,它使用共享库,因此不必将库打包在可执行文件中。您的程序在启动时会尝试查找库。