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

前言

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. 按照图片,制作动态库
posted @ 2022-01-10 09:15  周末不下雨  阅读(63)  评论(0编辑  收藏  举报