zoukankan      html  css  js  c++  java
  • 学习笔记 《鸟哥的私房菜——软件安装:源码和Tarball》

    文章原文:

    http://linux-vbird.bluedata.org/linux_base/0520source_code_and_tarball.htm#library_dyna_sta

    重点学习内容:

    一、 源码的编译:

         特别注意-l 和-L两个参数,在使用到外部函数库时是非常重要的。

    [guest@test guest]# gcc sin.c -lm -L/lib -L/usr/lib 
    # 特别注意,那个 -lm 可以拆开成两部份来看,
    # -l 是『加入某个函式库(library)』的意思,而m 则是 libm.so 这个函式库,其中, lib 与附档名(.a 或 .so)不需要写
    # 所以 -lm 表示使用 libm.so (或 libm.a) 这个函式库的意思~ ,这个语句可以写多次,比如
    # 至于那个 -L 后面接的路径呢?这表示:
    #『我要的函式库 libm.so 请到 /lib 或 /usr/lib 里面搜寻!』 
    [guest@test guest]# ./a.out 
    1.000000

        补充:

        头文件:g++ 时,默认的头文件都存在/usr/include,基本上大部分unix和linux都是这样的,可以用gcc   -I/usr/myinclude   来设置自己的包含路径 

    二、动态和静态函数库:

      静态函数库     动态函数库   
    扩展名

    通常为libXXX.a       

      通常为libXXX.so
    编译行为

    这类函数库在编译的时候会直接整合到执行程序当中,

    所以利用静态函数库编译成的文件会比较大一点

    动态函数库在编译的时候,在程序里面只有一个“指向”(Pointer,我的理解就个指针)

    的位置而已。也就是说,动态函数的内容并没有整合到可执行的文件当中,而是当可执行

    文件要使用到函数库的机制时,程序才去读取函数库来使用。由于可执行文件仅具有执行

    动态函数库所在的指针而已,并不包含函数库的内容。所以它的文件会小一点

    独立执行的状态

     它最大的优点,编译成功的可执行文件可以独立执行,

     而不需要再向外部要求读取函数库的内容

    这类型的函数库所编译出来的程序不能独立执行,因为当我们使用到函数库时,程序才会去

    读取函数库,所以函数库文件必须存在才行,而且函数库的所在目录也不能改变,因为我们

    的可执行文件里面仅有“指标”,亦即当要取用该动态函数库时,程序会主动去某个路径下读取,

    所以动态函数库可不能随意移动或删除,会影响到很多相关的程序 

    升级难易度

    虽然可执行文件可以单独执行,但因为函数库时直接整合到

    可执行文件,因此若函数库升级时,整个可执行必须要重新

    编译才能将新版的函数库整合到程序当中,也就是说,在升

    级方面,只要函数库升级了,所有将此函数库纳入的程序都

    必须重新编译 

     当函数库升级后,可执行文件根本不需要进行重新编译的行为,因为可执行文件会直接指向

    新的函数库文件(前提是函数库新旧版本的文件名相同)

        目前Linux distribution比较倾向于使用动态库,处于的考虑是升级的方便。

        绝大多数的函数库防止在/usr/bin,/lib目录下,此外,linux系统里面的函数其实kernel就提供了,它放在/lib/modules里面

  • 相关阅读:
    POJ 3694 Network (求桥,边双连通分支缩点,lca)
    UVA 796
    UVA 315 315
    POJ 1236 Network of Schools (有向图的强连通分量)
    【转】有向图强连通分量的Tarjan算法
    HDU 3072 Intelligence System (强连通分量)
    【转】强大的vim配置文件,让编程更随意
    WORDPRESS登录后台半天都无法访问或者是访问慢的解决方法
    phpstorm+Xdebug断点调试PHP
    PHP性能调优---PHP调试工具Xdebug安装配置教程
  • 原文地址:https://www.cnblogs.com/lengyuhong/p/2344638.html
Copyright © 2011-2022 走看看