Linux 库概念及相关动态库,静态库的制作和使用(面试重点)

一.分文件编程案例

好处:分模块的编程思想

           a.功能责任分的清楚

           b.方便调试

           c.主程序简洁


二.库

https://www.cnblogs.com/sunsky303/p/7731911.html

1.静态库

静态库:是在程序执行前也就是在编译时候就加入到程序中去了

优点:  a.运行快(静态库被打包到应用程序中了加载速度快)

          b.发布程序时无需提供静态库,因为已经在APP中了,移植方便

        

缺点:a.链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝

           b.更新,部署,发布麻烦

2.动态库

动态库:.在程序执行时动态加载(或者叫做临时调用)到目标程序中去了           

优点:

          a.链接时不复制,程序运行时由系统加载到内存,供程序调用,系统只加

          载一次,多个程序可以共用,节省内存

          b..程序升级简单,因为APP中里面没有库的源代码,升级后只要库的 名字不变,函数名以              及参数不变,只是做了优化,就能加载成功

缺点:

           a.加载速度比静态库的慢 ;

           b.发布程序需要提供动态库


三.库的制作(xxx.c是要打包成库的程序)

静态库:libxxx.a

  1. gcc   xxx.c          -c(此时文件夹中多了一个xxx.o文件)
  2. ar   rcs   libxxx.a    xxx.o    xxxx.o(生成libxxx.a静态库)

动态库:libxxx.so

  1. gcc   -shared   -fpic   xxx.c   -o    libxxx.so

-shared就是指定生成动态库

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

四.库的使用(xxx.c是要执行的程序)

静态库:gcc   xxx.c   -lxxx   -L  ./   -o   xxx(生成xxx是可执行文件)

-l是指定要用的静态库xxx.a

-L告诉gcc编译器从-L制定的路径去找静态库,不指定的话,默认是从/usr/lib或者/usr/local/lib

动态库:gcc   xxx.c   -lxxx.   -L  ./   -o   xxx(生成xxx是可执行文件)

要在环境变量中增加libxxx.so的路径

export LD_LIBRARY_PATH=”动态库的路径”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值