共享库如何减少进程使用的空间(数据,代码等)?

时间:2013-08-03 17:50:37

标签: c compiler-construction shared-libraries

我怀疑同一个程序如何在没有共享库的情况下为共享库提供不同大小的程序。?

      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。

1 个答案:

答案 0 :(得分:1)

我相信在第一种情况下,链接器将库静态链接到可执行文件中,从而使其更大。但是,这样做的一个优点是程序的用户不需要确保它们具有程序使用的某些库,因为库是打包在已编译的二进制文件中的。

在第二种情况下,它使用共享库,因此不必将库打包在可执行文件中。您的程序在启动时会尝试查找库。