C语言库的制作

制作C语言库

编写头文件,在文件内声明要用到的函数,

libh.h

#include <stdio.h>
// 两数相加
int add(int a, int b);
// 绝对值
int mabs(int a);

编写c语言库源码文件, 在文件内定义之前声明的函数。

libc.c

/*两数相加函数*/
int add(int a, int b)
{
 return a+b;
}
/*一个整型数的绝对值*/
int mabs(int m)
{
 int result = m;
 if (m < 0) {
 result  = 0-m;
 }
 return result;
}

生成C语言库

静态库

  1. gcc -c libc.c -o libc.o

将libc.c 编译成二进制文件取名为libc.o

ar cr libaku.a libc.o

将libc.o制作成名为libaku.a的静态库

动态库

  1. gcc -c libc.c -o libc.o

将libc.c 编译成二进制文件取名为libc.o

gcc -shared -fPIC -o libsku.so libc.o

将libc.o制作成名为libsku.so的动态库

调用C语言库

编写测试程序

main.c

#include "libh.h"
int main(int argc, char const* argv[])
{
 int n = 0;
 scanf("%d", &n);
 printf("|%d| = %d\n%d + 3 = %d\n", n, mabs(n), n, add(n, 3));
 return 0;
}

编译测试程序

测试静态库

  1. gcc main.c -L . -laku -o maina

-L指定库路径,-l指定库名, 库名为lib后半部分,编译测试程序取名为main**

./maina

运行main

测试动态库

  1. gcc main.c -L . -lsku -o mains

-L指定库路径,-l指定库名, 库名为lib后半部分,编译测试程序取名为main**

./mains

运行main

动态库, 静态库, 之间的差别

对于静态库而言, 当程序编译时会把静态库载入到程序当中去, 生成的运行包会比较大。
而且完成后静态库删除对程序不会有影响

但是动态库却是相反的, 它不会载入程序, 库必须保留,

转载于:https://my.oschina.net/dengwo/blog/599378

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值