静态库和共享库

来源:互联网 发布:antminer 代抢软件 编辑:程序博客网 时间:2024/04/29 21:00
共享库和静态库(重点)
   库文件 就是 .o文件的 集合,多个.o文件可以合成为一个 库文件。Unix/Linux提供了两种打包方式: 静态库和共享库
   静态库以 .a 为后缀名,共享库以 .so 为后缀名。
   区别:
    静态库 是代码的复制过程,共享库 只是留下了函数的地址。
    连接静态库,可执行文件会比较大,修改后需要重新连接,不利于 更新和维护。好处就是独立,可执行文件在运行时,不需要再次访问静态库。
    使用共享库,可执行文件比较小,修改后不一定重新连接,便于更新和维护。缺点不是独立的,可执行文件在运行时,需要多次访问共享库。

    一般开发中,使用共享库。
    静态库和共享库的生成和调用
    静态库的生成步骤:
    1 写源代码,保存退出。
    2 编译源代码,生成 .o文件。 gcc -c
    3 打包 生成 静态库文件
     ar -r lib名字.a add.o (所有.o文件)
     静态库文件名组成方式: lib开头, .a做后缀,中间放不同的名字即可。(命名规范)
    静态库的调用步骤:
    1 写调用的源程序(test.c)
    2 编译 调用的源程序
    3 连接 调用和静态库
     三种方式:
      a) gcc test.o libxx.a (就是直接把文件名放一起)
      b) 先配置环境变量LIBRARY_PATH,把库文件所在路径配好。然后用:gcc test.o -l xx (lib和.a 省略)
      c) 直接连用:gcc test.o -l xx -L 库文件所在路径
     
  注:开发 提供 给别人 头文件+库文件即可。
   
   共享库的生成步骤:
    1 写源程序
    2 编译源程序,生成.o文件。gcc -c -fpic add.c
     (-fpic不写貌似也行)
    3 生成 共享库文件。
      gcc -shared add.o -o libmyku.so
    共享库的命名规范与静态库一样,但后缀名改为 .so
   共享的使用步骤:
    与静态库完全一样。

   注:共享库的执行需要配 环境变量 LD_LIBARAY_PATH,否则a.out运行不起来。
   export LD_LIBARAY_PATH=.
原创粉丝点击