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

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

前言


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 可执行文件名


0a2653c851af460fa595bd959398a8f1.png


练习


1.将add.c制作成静态库并使用

2.将sub.c add.c制作成libcal.a静态库并使用

3.按照图片,制作动态库


相关文章
|
6月前
|
Windows 计算机视觉 Linux
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
该文档介绍了Qt的跨平台特性,并推荐在Windows和Linux开发中使用QtCreator。在Windows下添加动态库,可以通过Visual Studio配置.lib文件和.dll文件,或在QtCreator中使用&quot;添加库&quot;功能。在QtCreator中,选择库文件、包含路径,并配置Details,然后更新.pro文件,清除、qmake及构建项目。运行时确保.dll与.exe在同一目录下。
214 0
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
|
7月前
|
开发工具 iOS开发
制作传统动态库和静态库遇到的问题
制作传统动态库和静态库遇到的问题
49 1
|
7月前
|
Linux C语言
【Linux】C语言动态库和静态库的制作和使用
【Linux】C语言动态库和静态库的制作和使用
|
7月前
|
C++
[MFC] 动态链接库的制作过程和使用方法与总结
[MFC] 动态链接库的制作过程和使用方法与总结
136 0
|
程序员 vr&ar C语言
C/C++静态库和动态库的制作、使用、优缺点
C/C++静态库和动态库的制作、使用、优缺点
235 0
|
Shell
静态库和动态库制作
静态库和动态库制作
61 0
|
Linux 编译器 vr&ar
在linux下制作静态库和动态链接库的方法
在linux下制作静态库和动态链接库的方法
89 0
|
Linux vr&ar C语言
Linux下静态库和动态库(共享库)的制作和使用
Linux下静态库和动态库(共享库)的制作和使用
153 0
|
存储 Linux 编译器
【四、静态库与动态库(共享库)】揭开链接库的神秘面纱:手把手教你制作静态链接库与动态链接库(一)
【四、静态库与动态库(共享库)】揭开链接库的神秘面纱:手把手教你制作静态链接库与动态链接库
292 0
【四、静态库与动态库(共享库)】揭开链接库的神秘面纱:手把手教你制作静态链接库与动态链接库(一)
|
Linux Shell 编译器
【四、静态库与动态库(共享库)】揭开链接库的神秘面纱:手把手教你制作静态链接库与动态链接库(二)
【四、静态库与动态库(共享库)】揭开链接库的神秘面纱:手把手教你制作静态链接库与动态链接库
403 0
【四、静态库与动态库(共享库)】揭开链接库的神秘面纱:手把手教你制作静态链接库与动态链接库(二)