初步认识库的生成和使用

库的生成和使用

库是预先编译好的方法的集合,库文件常存放的地点为/lib或/usr/lib,库对应的头文件一般存放在/usr/include中.

静态库:是在程序编译时链接的。使用静态库的方法,在编译链接时,直接包含到可执行程序中,运行时,不在需要用到库。libxx.a(xx 为库名)  

若有两种方法int add(int a,int b),int max(int a,int b)分别在两个文件add.c和max.c中存放,则静态库的生成过程如下:    

1):将所有的.c文件编译成.o目标文件           

 gcc -c add.c     生成add.o           

 gcc -c max.c     生成max.o    

2):对生成的.o目标文件打包生成静态库

ar  crv  libxx.a  add.o max.o          

libxx.a是库的名字               

ar:做库的命令               

c:创建库               

r:将方法添加到库里               

v:显示过程,可以不要     

3)使用静态库                

gcc -o main main.c -L. -lxx                     

-L:指定路径 .代表当前路径  -l:指定库名    

共享库又称动态库是在程序运行时链接的。使用共享库里的方法,在编译链接时,在可行性文件中不包含,只作标记,运行时,动态链接。

libxx.so   xx为库名

1)创建共享库:

xx.c  ->  xx.o   

gcc -shared -fPIC -o libxx.so xx.o xx’.o

2)将所有的.c文件编译成.o目标文件   

gcc -c max.c    

gcc -c add.c

对生成的.o文件处理生成共享库,假设共享库的名字为libcy.so, gcc -shared -fPIC -o libcy.so add.o max.o参数-shared 表示输出结果是共享库类型的-fPIC 表示使用地址无关代码(Position Independent Code)技术来生产输出文件

3)库的使用gcc -o main main.c -lfoocp  libfoo.so  /usr/lib

ldd + 文件名 查看可执行程序应用的共享库(eg.  ldd main)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值