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