打包静态库、动态库及其使用

1.编写子函数

add.c

#include<stdio.h>
int add(int left,int right)
{
   return left + right;
}

sub.c

#include<stdio.h>
int sub(int left,int right)
{
   return left - right;
}

mul.c

#include<stdio.h>
int mul(int left,int right)
{
   return left * right;
}

div.c

#include<stdio.h>
int div(int left,int right)
{
   return left / right;
}

2.生成.o文件

gcc -c add.c -o add.o          其中-fPIC选项表示生成与地址无关代码

分别运行四次生成:add.o sub.o mul.o div.o文件

3.生成动态库

执行下列命令

gcc -fPIC --share add.o mul.o sub.o div.o -o libmylib.so

-fPIC选项表示生成与地址无关代码,–share表示生成一个动态库,其中lib是动态库的前缀,.so是后缀,中间的mylib是库名称。
最后生成:
在这里插入图片描述

4.生成静态库

执行以下命令

ar -cr libmylib.a add.o mul.o sub.o div.o

ar:静态库生成的链接器。
-c:创建静态库。
-r:模块替换。
libmychild.a中lib是前缀,.a是后缀名,mylib为静态库名。
运行完后生成以下文件:
在这里插入图片描述

5.库的使用

静态库与动态库名字相同默认链接动态库
编写四个子函数的头文件(add.h,sub.h,mul.h,div.h),编写main.c

#include <stdio.h>
#include"add.h"
#include"sub.h"
#include"mul.h"
#include"div.h"
int main()
    {
      int   a = 10;
      int   b = 20;
      printf(" a + b = %d\n",add(a,b));
      printf(" a - b = %d\n",sub(a,b));
      printf(" a * b = %d\n",mul(a,b));
      printf(" a / b = %d\n",div(a,b));

      return 0;
    }
5.1 动态库的使用

1.链接库文件的搜索路径
(1)将要链接的第三方库(libmylib.so),复制到目录 /lib64 /usr/lib64 …
(2)也可以使用export LIBRARY_PATH=.环境变量的设置,来设置库的链接搜索路径
(3)gcc的-L选项,指定链接时库的搜索路径 gcc main.c -o main -L . -lmylib

 gcc main.c -o main -L. -lmylib

2.动态库的加载搜索路径
程序运行时,若程序时动态链接生成,运行时需要到指定的目录下加载动态库 /lib64 /usr/lib64 …

5.2 静态库使用
gcc main.c -L -lmychild
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值