静态函数库设计
在程序设计中离不开函数的调用,函数分为库函数、系统调用,库函数由glibc库提供,系统调用由Linux内核提供。函数库分为静态链接库和动态链接库。
静态链接库特点:程序所要用到的库函数代码在链接时全部被copy到程序。静态链接库以*.a为后缀,以*.so.*为动态链接库,Linux系统中主要库位于/lib和/usr/lib目录下。
步骤:
方法一:
1、安装静态函数库,由于redhat Linux默认不提供静态函数库,所以我们自己安装。glibc-static-2.12-1.80.el6.i686.rpm,安装rpm -ivh glibc-static-2.12-1.80.el6.i686.rpm。
2、编辑mylib.c文件,在文件中实现一个加法函数int add(int a,int b)。
3、只编译不链接mylib.c文件,gcc -c mylib.c -o mylib.o
4、将编译处的mylib.o文件打包成静态链接库,执行命令 ar cqs libmylib.a mylib.o。
5、将libmylib.a文件复制到/usr/lib目录下。
6、编写test.c测试程序,在程序中调用刚制作的静态链接库函数。
#include<stdio.h>
int main()
{
printf("1+2=%d\n",add(1,2));
return 0;
}
7、编译test.c并且指定依赖的库,执行命令"gcc -static test.c -lmylib -o test"。
8、运行编译好的test可执行程序。
方法二
1、编辑taxlib.c文件,里面就是函数的实现。
2、编译但不链接taxlib.c文件,gcc -c taxlib.c -o taxlib.o
3、将编译出的taxlib.o打包成静态链接库,使用命令:ar cqs libtaxlib.a taxlib.o
4、将libtaxlib.a复制到/usr/lib目录下。
5、在当前目录下创建tax.h文件,将tax函数原型定义在该头文件中,int tax(int salary,int insurance);
6、编辑mytax.c文件
#include<stdio.h>
#include"tax.h"
int main()
{
printf("i need tax:%d\n",tax(9000,1200));
return 0;
}
7、编译mytax.c并且指定依赖的库
gcc -static mytax.c -ltaxlib -o mytax
8、运行mytax可执行程序。
总结:“-c”编译选项,只对程序做编译,不链接。“- static ”编译选项,静态编译程序。"-l"编译选项,指定被编译的程序所依赖的库文件。
ar cqs lib(静态库名).a 被制作的库文件(*.o)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】