自我测试
- | 如何制作自己的静态库,
- | 静态库的名字的格式是什么
- | 用什么指令制作静态库
- | 如何查看静态库里面有什么文件与函数
- | 如何链接使用自己的静态库
- | 动态库的名字格式是什么,如何制作动态库
- | 使用什么指令制作自己的动态库,熟练制作动态库的流程
第一讲
1.1 静态库
- 库有源码,如果关心源码的实现,并且想进行优化,可下载库源码后编译;但是一般直接安装编译好的二进制包
- linux库存放在 /lib / usr/ lib
- Windows和 Linux下库文件的格式不兼容
库 | 已经编译好的二进制文件 |
---|---|
静态库 | 静态库的代码复制到用户可执行文件中 |
1.1.2 如何创建自己的静态库 ar crs命令
//重要,每个公司的项目都需要写自己的库
- 静态库xxx的名称l示例 >> libxxx.a
1:将hello.c文件编译为.o的目标文件 |
---|
2:利用ar -crs(crs=才认识,用户代码crs库)命令将.o二进制的目标文件,转化为库文件 使用格式:ar - crs 库名 目标文件名 |
3:验证库是否制作成功 nm指令(由于库是封闭的一般看不见里面东西,需要骂一声nm) + 库名 |
4:写好了自己的静态库后,我们尝试链接自己的静态库,进行使用 -L >> 添加静态库的搜索路径 -l >> 链接静态库 动态库与静态库都使用l与L |
第二讲
2.1 共享库 / 动态库 (重要,嵌入式开发大多情况使用动态库)
- 共享库 / 动态库 ;级方便.可以远程升级
如何创建一个自己的动态库,并进行调用 |
---|
步骤一:编写自己的C源码 |
步骤二:gcc -c 指令将C源码编译为.o的二进制目标文件 |
步骤三:将.o二进制的目标文件封装成libxxx.so的动态库文件 gcc -shared由于动态库比较广泛,gcc已经将动态库的封装纳入gcc中,shared=已经分享了,过去式,提现了动态库的特点 |
步骤四:为封装好的版本号为1的libhello.so动态库文件生成一个链接文件/快捷方式(以便不同用户程序采用链接文件调用该动态库) s=蛇=动态 |
步骤5:生成好了快捷方式后,现在还是不能直接调用动态库,需要调用下面的指令 export LD_LIBRARY_PATH=SLD_LIBRARY_PATH:. 刷新一下动态库的加载路径,不然找不到该动态库 |
步骤六:编译用户文件,看是否能成功调用动态库里面的输出hello word的函数 编译方式与静态库的编译方式一模一样 |
结果:成功! |