学习心得:动态库与静态库的区别及相关知识

首先我们得知道什么是库呢?它在linux操作系统得哪个位置呢?

(为保证排版整齐,一些不太相关的知识点放在末尾进行补充)

一、什么是库?

1、库是一种加密的二进制文件

2、需要被操作系统载入内存运行

3、相比于可执行文件,它不可以直接运行

4、windows和linux都有自己的库,,但是不兼容

5、linux的库有两种,静态库和动态库

二、在linux操作系统中库存放在哪里呢?

1、库的头文件存放在:/usr/include

2、库存放在:/lib

三、如何识别静态库与动态库?

1、静态库 :*.a

2、动态库:*.so

四、使用时静态库与动态库的区别 ? 

1、静态库:

编译: gcc    man.c    -L路径    -lxxx 

            -L : 指定库所在的目录

            -l : 指定库的名字 (xxx部分)

运行:./a.out

优点:a.out运行时候不需要外部库,运行速度相对较快;发布程序无需提供静态库,移植方便。

缺点:每个a.out都要包含库,体积较大,运行时浪费内存资源;库的更新需要编译项目文件,对程序的更新、部署、发布带来麻烦。

2、动态库:

编译:gcc   main.c   -L路径   -lxxx

          -L : 指定库所在的目录

          -l : 指定库的名字 (xxx部分)

运行:通过以下的方法进行配置后,直接运行   ./a.out

           法1:将动态库拷贝到 /lib 中(上提到的存放库的位置)

           法2:export LD_LIBRARY_PATH = .   (不要因为这个点小就忽略哦!!)

                    或  so 所有的路径,这种方式只对当前终端有效,另外开的其他中断无效。

           法3:步骤1:pwd     查出当前路径

                    步骤2:cd   /etc/ld.so.conf.d    跳转路径

                    步骤3:ls       查看当前路径

                    步骤4:sudo   vi   my.cof    使用超级用户权限打开文件

                    步骤5:添加步骤1得到的路径到文件中

                    步骤6:sudo  ldconfig     使更改的文件生效

优点:动态库编译后体积较小;动态库的改变不影响程序,更新相对比较方便。

缺点:程序运行时必须提供相应的库,缺少相应的库就无法运行程序,发布时必须提供相应的库。

拓展:

1、 i386通常作为对Intel32位处理器得统称。

2、ldd 用于查看可执行程序依赖的动态库有哪些

     例如:ldd a.out    查看a.out依赖的以.so结尾的动态库

                ldd /bin/ls   查看  ls   依赖的以.so结尾的动态库

3、pwd查看当前路径的绝对路径

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值