linux静态库的制作及问题解决
首先介绍下分文件,在学习或者开发中,实现一个项目需要实现很多的功能,那么这些功能不可能在一个".c"文件下实现,需要多个".c"文件来共同实现,但是程序的入口只有一个,就体现了分文件编程的重要性,在主函数中调用其余的功能函数。
分文件编程的优点及意义就是:
- 分模块编程思想
- 功能责任划分清晰
- 方便调试
- 主程序简洁
偷个图
简单说静态库就是把需要的库直接编译加入到可执行文件中,下面正式开始讲解制作一个简单的计算器demo。
1 .准备3个.c文件文件内容如下
- 把.c编译成.o为静态库准备原材料
- 使用ar工具制作静态库
其中ar rcs是固定格式lib前缀和.a后缀也是固定格式mymath才是自己写的库名
- 创建一个c文件并写主入代码
- 使用gcc编译test.c
把.c和.o材料放入resource
此时发现三个函数未定义这是因为编译器找不到这三个函数的定义此时用gcc加入刚刚完成的静态库重新编译发现成功编译并运行
- 虽然成功运行了但其实还是存在问题的,只是警告等级太低编译器没有警告,用wall显示出所有警告
其中的隐式声明是系统在找不到用户声明的时候会自动声明为int add(int ,int)因此此程序可成功运行
- 既然系统不认识这几个函数,那我们就让他认识
创建一个mymath.h文件存放函数声明不需要实现因为我们已经把实现的代码弄到静态库里了,现在只是系统不认识而已
此时我们再编译会发现没问题且可以运行
- 到这里一个简单的静态库就制作好了,我们把它打包一下
在当前目录下创建inc存放头文件,lib存放静态库,并重新编译
其中-I是用来指定头文件的