静态库和动态库简介

静态库和动态库简介

1.静态库

特点:通过牺牲空间而换来了效率,占用更大的存储空间而有更高的效率


使用流程:

1)将.c文件生成.o文件

gcc -c + c文件 + -o + o文件

2)使用ar工具制作静态库

ar rcs libxxxxx.a + 静态库材料(静态库的命名规则是固定的)

3)编译静态库到可执行文件中

gcc + c文件 + 静态库名 + -o + 可执行文件名

2.动态库

特点:动态库加载到内存后,动态库中的函数有地址了,引用的动态库函数才有地址


1)将.c文件生成.o文件

gcc -c + c文件 + -o + o文件 + -fPIC

2)使用gcc制作动态库

gcc -shared -o + libxxxxx.so + 动态库材料(动态库的命名规则是固定的)

3)编译可执行程序时,指定所使用的动态库

gcc + c文件 -o + 可执行文件名+ -l +动态库名 + -L + 库路径


附:链接器:工作于链接阶段,工作时需要-l和-L提供动态库路径

​ 动态链接器:工作于程序运行阶段,工作时需要提供动态库所在目录位置

​ 运行出错解决方法:[1] 写入环境变量:export LD_LIBRARY_PATH= + 动态库路径(绝对路径)

​ [2] 写入终端配置文件:vi ~/.bashrc → 更改LD_LIBRARY_PATH → sourse ~/.bashrc

​ [3] 将库移动到/lib目录下:sudo cp + 动态库名 + /lib

3.其他

  • 动态库是否加载到内存,取决于程序是否运行。
  • 动态库每次加载的位置不固定。
  • 动态库和静态库共存的时候,编译器默认使用动态库。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值