D4 - 制作自己的库及调用

第一讲

1.1 静态库

  • 库有源码,如果关心源码的实现,并且想进行优化,可下载库源码后编译;但是一般直接安装编译好的二进制包
  • linux库存放在 /lib / usr/ lib
  • Windows和 Linux下库文件的格式不兼容
已经编译好的二进制文件
静态库 静态库的代码复制到用户可执行文件中

1.1.2 如何创建自己的静态库 ar crs命令

//重要,每个公司的项目都需要写自己的库

  • 静态库xxx的名称l示例 >> libxxx.a
1:将hello.c文件编译为.o的目标文件
D4 - 制作自己的库及调用
2:利用ar crs命令将.o二进制的目标文件,转化为库文件
使用格式:ar crs 库名 目标文件名
D4 - 制作自己的库及调用
3:验证库是否制作成功
nm指令 + 库名
D4 - 制作自己的库及调用
4:写好了自己的静态库后,我们尝试链接自己的静态库,进行使用
-L >> 添加静态库的搜索路径
-l >> 链接静态库
D4 - 制作自己的库及调用

第二讲

2.1 共享库 / 动态库 (重要,嵌入式开发大多情况使用动态库)

  • 共享库 / 动态库 ;级方便.可以远程升级
如何创建一个自己的动态库,并进行调用
步骤一:编写自己的C源码
D4 - 制作自己的库及调用
步骤二:gcc -c 指令将C源码编译为.o的二进制目标文件
D4 - 制作自己的库及调用
步骤三:将.o二进制的目标文件封装成libxxx.so的动态库文件
D4 - 制作自己的库及调用
步骤四:为封装好的版本号为1的libhello.so动态库文件生成一个链接文件/快捷方式(以便不同用户程序采用链接文件调用该动态库)
D4 - 制作自己的库及调用
步骤5:生成好了快捷方式后,现在还是不能直接调用动态库,需要调用下面的指令
export LD_LIBRARY_PATH=SLD_LIBRARY_PATH:.
刷新一下动态库的加载路径,不然找不到该动态库
步骤六:编译用户文件,看是否能成功调用动态库里面的输出hello word的函数
编译方式与静态库的编译方式一模一样
D4 - 制作自己的库及调用
结果:成功!
D4 - 制作自己的库及调用