嵌入式(十二)——库文件及静态库与动态库的制作与使用(附练习)
前言
1.编译器gcc
静态库和动态库的制作与使用
2.调试器gdb
常用命令、调用内存错误
3.工程管理器make
makefile编写、多目录的makefile的编写
一、库文件
- 库文件:保存函数和变量,里面的函数和变量只能使用,但是看不到其实现
- 库函数(保存在库文件):printf scanf strcat
- 库文件的分类
静态库.a 保存的函数和变量,在编译阶段加载到可执行文件中
动态库.so 保存的函数和变量,在执行阶段加载到可执行文件中
- 使用静态库和动态库的区别(可执行文件的区别)
- 使用静态库编译出来的文件大小 > 使用动态库编译出来的可执行文件大小(影响:内存的开销)
- 使用静态库编译出来的执行文件速度 >(快于) 使用动态库编译出来的执行文件速度
- 使用静态库编译出来的执行文件升级 < 使用动态库编译出来的可执行文件升级
- 使用静态库编译出来的执行文件程序部署 > 使用动态库编译出来的可执行文件程序部署
库文件的存放路径:系统运行所需要的的库文件:/lib
第三方软件和工具运行所需要的的库:/usr/lib
编译时,编译器会自动到这两个目录里找所需要链接的库文件
1.1 制作静态库
- 将目标源文件编译成目标文件:gcc -c 目标源文件1 目标源文件2 (gcc -c add.c)
- 使用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 可执行文件名
练习
- 将add.c制作成静态库并使用
- 将sub.c add.c制作成libcal.a静态库并使用
- 按照图片,制作动态库
分类:
嵌入式Linux
标签:
gcc/gdb编译调试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理