静态函数库和动态函数库的制作

本文详细介绍了在Linux环境下如何制作静态函数库和动态函数库。首先,通过编写源文件和头文件,然后使用gcc进行编译生成目标文件,接着利用ar命令创建静态库,将库文件复制到/usr/lib目录。对于动态库,同样先编译源文件,使用gcc的-shared和-fPIC选项生成动态库,并将其复制到/usr/lib。最后,通过-l标志链接库并测试函数库是否成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 函数库可以分为静态函数库和动态函数库,对于linux,函数库主要存在/lib 和/usr/lib目录下,其中后缀名是'.a'的代表是静态函数库,后缀名是'.so'动态函数库,我们一般编译的时候默认是使用动态函数库的,如果想使用静态函数库需加上 static ,像这样:gcc -static main.c -o main,接下来介绍一下静态函数库和动态函数库的做法:

静态函数库的制作

1.编写库的源文件:

mylib.c 和 mylib.h

2.编写测试函数库的源文件:

tets.c

3.编译我们的库源文件,使它生成.o目标文件:

gcc -c mylib.c -o mylib.o

4.将目标文件生成静态函数库:

ar cqs libmylib.a mylib.o

( ar是生成库的命令,cqs是参数,libmylib.a是生成的静态链接库须以lib开头,mylib是库名,a表示是静态链接库)

5.将libmylib.a复制到/usr/lib下:

cp libmylib.a /usr/lib

6.测试我们所写的静态函数库:

  • 编译运行测试函数:

gcc test.c -lmylib -o test

(-lmylib其中-l可以说是代表了动态链接库libmylib中的lib)

若发现是自己想要的结果,就说明静态库制作成功!附上自己的源码:

//mylib.c
int fuc(int m,int n)
{
   int p = m - n;
   if ( m <= 10 )
   {
       return p;
   }
      if ((m > 10)&&(m <= 20))
   {
       return 2*p;
   }
      if ((m > 20)&&( m <= 30) )
   {
       return 3*p;
   }
}
//test.c
#include <stdio.h>
#incldue <mylib.h>
void main()
{
    int count = 0;

    count = fuc(30,15);

    printf("count is : %d\n", count);
}
//mylib.h
int fuc(int m, int n);

动态函数库的制作

我们继续用做静态函数库的那个例子:

1.前几步和静态函数库制作的1~3步是一样的

gcc –c mylib.c –o mylib.o

2.生成目标文件之后,采用下面的命令

gcc -shared -fPIC mylib.o -o libmylib.so

(-shared是指明产生动态链接库, -fpic 使输出的对象模块是按照可重定位地址方式生成的,libmylib.so是生成的动态链接库须以lib开头,mylib是库名,so表示是动态链接库)

3.将制作好的libmylib.so 复制到/usr/lib

cp libmylib.so /usr/lib

4.测试我们所写的动态函数库

gcc test.c -lmylib -o test

(-lmylib其中-l可以说是代表了动态链接库libmylib中的lib)

源码和制作静态函数库的一样 >_<


———————-END——————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值