静态库和动态库

库的制作:
    1、什么是库
        静态 是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中, 连接器 将从库文件取得所需的 代码 ,复制到生成的 可执行文件 中的这种
/lib/i386-linux-gnu
/usr/include
        1.库是一种加密的二进制文件
        2.需要被操作系统载入内存运行
        3.相比于可执行程序,它不可以直接运行
        4. window和linux都有自己的库,但是不兼容
        5.Linux系统的库有两种:1.静态库2.共享库(又叫动态库)
        静态库        动态库
linux     *.a         *.so 

windows   *.lib       *.dll
2、静态库的制作和使用
1.制作
$ gcc -c xXx.C -O XXX.O
$ ar -crs libxxx.a XXX.O
静态库的命名规范:    
必须以lib开头,紧跟库的名字,跟扩展名.a
    例如: libxxx.a
2.使用  
        将生成的libMytest.a库文件和头文件head.h发送给客服,客服就可以根据头文件中的 接口情况,来知道库文件的功能 (具体怎么实现的他也不知道),从而客服就可以使用库文件来完成自己的工作了(main.c):
 $ gcc main.c -L路径 -lxxx
        -L:指定静态库所在的目录
        -l:指定静态库的名字  xxx部分
3.运行
  
 $ ./a.out (7200)
     优点:a.out运行后不需要库,可以直接运行
     缺点: 每个a.out都要包含库,体积较大,浪费资源
               对程序更新,部署,发布带来麻烦;

3、动态库的制作和使用

1). 动态库也叫共享库
2). 动态库把对一些库函数的链接载入推迟到程序运行的时期(runtime)
3). 可以实现进程之间的资源共享
4). 将一些程序升级变得简单
5). 甚至可以真正做到链接载入完全由程序员在程序代码中控制
6). 动态链接库的名字形式为 “libxxx.so” 后缀名为 “.so”
7). windows共享库是以 .dll 为后缀的文件

1.制作
    $ gcc -fPIC -c xxx.c -o xxx.o
    $ gcc -shared -o libxxx.so xxx.O
动态库的命名规范:  
  必须以lib开头,紧跟库的名字,跟扩展名.so
    例如: libxxx.So
2.使用  
 $ gcc main.c-L路径-l××x

 $ ldd a.out# 用于查看可执行程序依赖的动态库有哪些
3.运行  
 $  ./a.out#会报错(7146)
动态库的搜索方式(3种,任意选一种):
    1、将动态库拷贝到/lib/或者/usr/lib/
            $ sudo cp libxxx.so    /usr/lib/
    2、export LD_LIBRARY_PATH=.或者so所在的路径(临时情况)
    3、
        pwd
        cd /etc/ld.so.conf.d
        ls
        sudo vi my.conf
        添加路径
        sudo ldconfig 生效
特点:
    在编译时不会链接到可执行文件中,只是再其中保存一个索引,在运行时,才真正的链接(动态),因此可执行程序体积小。
优点:
    a.out体积较小,节约资源;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值