Linux中库的概念,动态库,静态库

1.什么是库

        库在Linux中是一个二进制文件,它是由.cpp文件(不包含卖弄函数)编译而来,其他程序如果想要使用该源文件中的函数时,只需在编译生成可执行程序时,链接上该源文件生成的库文件即可。库中存储的是二进制文件,不容易被窃取只是产权,做到了保护作用给。

库在Linux中分为两类:静态库和动态库

        Windows:***.lib(静态库)。***.dll(动态库)。

        Linux:***.a(静态库)。***.so(动态库)

2.静态库及其制作

        概念:将一个***.cpp的文件编译生成一个lib***.a的二进制文件,当你需要使用该源文件中的函数时,只需要链接该库即可。后期可以直接调用

        静态体现:在使用g++编译程序时,会将你的文件和库最终生成一个可执行程序(把静态库也放到可执行程序中),每个可执行程序都有一个静态库,体积较大,但是,执行效率高

2.1准备程序

        add.h,add.cpp,.main.cpp

2.2编译生成静态库

        gcc  -c ***.c -o ***,o                //只编译不链接生成二进制文件

        ar -crs lib***.a ***.o                //编译生成静态库,.a文件依赖于.o文件

        如果有多个.o文件共同编译生成静态库: ar -crs lib***.a ***.o  ***.o xxx.o ...

        ar:用于生成静态库的指令

        c;用于创建静态库

        r:将文件插入或者替换静态库中同名文件

        s:重置静态库索引

2.3使用静态库

        gcc main.cpp -L  库的路径 -l库名 -I(i) 头文件的名字

点(.)表示在当前路径

 多路径经行编译

3.动态库及其制作

        概念:将一个***.cpp的文件编译生成一个lib***.so的二进制文件,当你需要使用该源文件中的函数时,只需要链接该库即可。后期可以直接调用

        静态体现:在使用g++编译程序时,会将你的源文件和库中相关函数的索引表一起生成一个可执行程序,每个可执行程序只拥有函数的索引表,当程序执行到对应函数时,会根据索引表,动态寻找相关库所在位置进行调用,体积较小,执行效率较低,但是可以多个程序共享同一个动态库,所以,动态库也叫共享库。

3.1准备程序

        add.h,add.cpp,.main.cpp

3.2编译生成动态库

        g++ -fpic -c ***.cpp -o  ***.o        //编译生成二进制文件

        g++ -shared  ***.o -o lib***.so        //依赖于二进制文件生成一个动态库

上述两个指令可以合成一个指令

        g++ -fpic -shared ***.cpp -o lib***.so

3.3使用动态库

    3.4以上错误的解决方式

        方式1:更改路径宏

                export  LD_LIBRARY_PATH=库的路径

方法2:将自己的动态库放入到系统的库函数目录中(/lib64                 /usr/lib64)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值