Linux库之静态库和动态库

目录

介绍

 静态库与动态库的制作与使用

         1.1  静态库的制作    格式xxxx.a

        1.2 静态库的使用      

         1.3  动态库的制作    格式:xxx.so 或 xxx.dll

          1.4  动态库的使用 


介绍

        使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。  

程序函数库可分为3种类型:静态函数库(static libraries)、共享函数库(shared libraries)、动态加载函数库(dynamically loaded libraries): 

1、静态函数库,是在程序执行前就加入到目标程序中去了 

  • 优点:可执行程序直接运行,不需要额外链接,运行速度快
  • 缺点:加入多个程序共同使用同一个静态库,相当于把多段相同的代码保存在不同的可执行               程序中,在空间上有一定浪费

2、动态函数库   可执行程序只保存对应的函数引用表,只有程序执行时,再链接对应的库

  • 优点:多个可执行程序共用同一个库,节省内存
  • 缺点:运行可执行程序需要额外做一次链接操作,执行速度相对慢

 静态库与动态库的制作与使用

         1.1  静态库的制作    格式xxxx.a

           第一步生成.o文件: gcc xxx.c -c
           例:gcc text.c -c文件 (仅源文件生成.o文件,主程序不用生成.o文件)

         第二步打包.o文件生成静态库: ar rcs 静态库名字.a 所有需要打包的.o文件
           例:ar rcs libtext.a text2.o (库名字尽量由lib开头)

        1.2 静态库的使用      

            生成可执行文件:gcc text1.c -ltext -L ./ -o demo1

                  -ltext-l指定要用的静态库,库名砍头(lib)去尾(.a)

                  -L:告诉gcc编译器从-L指定的路径去找静态库。默认是从/usr/lib 或 /usr/local/lib 去找

         1.3  动态库的制作    格式:xxx.so 或 xxx.dll

                 生成动态库:gcc -shared -fpic -o 动态库名字.so 所有需要的源文件

                  -shared: 指定生成动态库      

                   -fpic: 作用于编译阶段,在生成目标文件时使用,以生成位置无关的代码         

             例: gcc -shared -fpic text2.c -o libtext.so 库名字尽量由lib开头)    

          1.4  动态库的使用 

                生成可执行文件gcc text1.c -ltext -L ./ -o demo2

               -ltext-l指定要用的动态库,库名砍头(lib)去尾(.so)

              -L:告诉gcc编译器从-L指定的路径去找动态库。默认是从/usr/lib 或 /usr/local/lib 去找

        linux的动态库默认搜索路径为/usr/lib/usr/local/lib ,找不到程序运行就会出错,所以在运行          程序前要指定动态库的搜索路径
        指定动态库搜索路径
        export LD_LIBRARY_PATH=“路径名”
        (该方式仅对当前的终端有效)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值