目录
一、运用静态库完成两整型数加减运算
输入命令vim main.c编写main.c文件,代码如下
#include<stdio.h>
#include"A.h"
int main()
{
int x=1,y=2;
int dif,sum;
sum=x2x(x,y);
dif=x2y(x,y);
printf("sum=%d\n",sum);
printf("dife=%d\n",dif);
return 0;
}
输入命令vim sub1.c编写文件sub1.c,其代码如下
#include<stdio.h>
int x2x(int x,int y)
{
int sum;
sum=x+y;
return sum;
}
输入命令vim sub2.c编写文件sub2.c,其代码如下
#include<stdio.h>
int x2y(int x,int y)
{
int dif;
dif=x-y;
return dif;
}
输入命令vim A.h编辑A.h文件,代码如下
#ifndef A_H
#define A_H
int x2x(int,int);
int x2y(int,int);
#endif
将上述三个.c文件编译成.o文件,依次输入命令
gcc -c main.c sub1.c sub2.c
将x2x和x2y函数的目标文件生成1个.a静态库文件
ar crv libtwo.a sub1.o sub2.o
用gcc将main函数的目标文件与上述静态库文件libtwo.a进行链接生成最终可执行文件main,并运行程序。
gcc -o main main.c libtwo.a
./main
查看指定文件大小
du -sk filename
二、运用动态库完成两整型数加减运算
生成目标文件(xxx.o)( 此处生成.o 文件必须添加"-fpic"(小模式,代码少),否则在生成.so文件时会出错)
gcc -c -fpic sub1.c sub2.c
将x2x和x2y函数的目标文件生成1个.so动态库文件libtwoo.so
gcc -shared sub1.o sub2.o -o libtwoo.so
将对应 libtwoo.so 文件拷贝到对应路径
sudo cp libtwoo.so /usr/lib
用gcc将main函数的目标文件与上述静态库文件libtwo.a进行链接生成最终可执行文件main1,并运行程序。
gcc -o main1 main.c libtwoo.so
./main1
三、对比
1.静态库相比于动态库少一个.so文件的移动;
2.静态库生成的可执行文件main与动态库生成的可执行文件main1文件大小都为12k,此处无法得到动态函数库所产生的可执行文件比较小的结论。
3.静态库文件libtwo.a文件大小为4k,而动态库文件libtwoo.so大小为8k。