嵌入式(十二)——库文件及静态库与动态库的制作与使用(附练习)

前言

1.编译器gcc

静态库和动态库的制作与使用

2.调试器gdb

常用命令、调用内存错误

3.工程管理器make

makefile编写、多目录的makefile的编写

一、库文件

  • 库文件:保存函数和变量,里面的函数和变量只能使用,但是看不到其实现
  • 库函数(保存在库文件):printf scanf strcat
  • 库文件的分类

静态库.a 保存的函数和变量,在编译阶段加载到可执行文件中
动态库.so 保存的函数和变量,在执行阶段加载到可执行文件中

  • 使用静态库和动态库的区别(可执行文件的区别)
  1. 使用静态库编译出来的文件大小 > 使用动态库编译出来的可执行文件大小(影响:内存的开销)
  2. 使用静态库编译出来的执行文件速度 >(快于) 使用动态库编译出来的执行文件速度
  3. 使用静态库编译出来的执行文件升级 < 使用动态库编译出来的可执行文件升级
  4. 使用静态库编译出来的执行文件程序部署 > 使用动态库编译出来的可执行文件程序部署

库文件的存放路径:系统运行所需要的的库文件:/lib
第三方软件和工具运行所需要的的库:/usr/lib
编译时,编译器会自动到这两个目录里找所需要链接的库文件

1.1 制作静态库

  1. 将目标源文件编译成目标文件:gcc -c 目标源文件1 目标源文件2 (gcc -c add.c)
  2. 使用ar工具制作静态:ar -rcs(库不存在就创建,存在就更新)所要生成的库文件的名字(lib+库名+后缀.a) 目标文件
    ar -rcs libadd.a add.o

1.2 使用静态库

-l:指定加载哪个静态库 -l库名(gcc demo.c -ladd)
-L:指定加载的库文件的存放路径(gcc demo.c -ladd -L/root/205/1107/)

1.3创建动态库

gcc -shared -fPIC -o 库名.so 源文件.c

1.4使用动态库

gcc 源文件.c ./库名.so -o 可执行文件名
动态库的做法

练习

  1. 将add.c制作成静态库并使用
  2. 将sub.c add.c制作成libcal.a静态库并使用
  3. 按照图片,制作动态库
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周末不下雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值