自我测试

  • | 如何制作自己的静态库,
  • | 静态库的名字的格式是什么
  • | 用什么指令制作静态库
  • | 如何查看静态库里面有什么文件与函数
  • | 如何链接使用自己的静态库
  • | 动态库的名字格式是什么,如何制作动态库
  • | 使用什么指令制作自己的动态库,熟练制作动态库的流程

第一讲

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的函数
编译方式与静态库的编译方式一模一样
结果:成功!