1.先创建一个目录
mkdir test
cd test
2.然后使用vim编辑器编辑生成sub1.c,sub2.c,main1.c
sub1.c代码
extern float x2x(int a,int b)
{
return (float)a/b; //相除
}
sub2.c代码
extern float x2y(int a,int b)
{
return (float)a*b;
}
main1.c代码
#include "sub1.c"
#include "sub2.c"
#include <stdio.h>
int main() {
int x,y;
scanf("%d%d",&x,&y);
printf("%5f\n",x2x(x,y));
printf("%5f\n",x2y(x,y));
return 0; }
3.将 sub1.c、sub2.c 、main1.c编译成 .o文件
gcc -c sub1.c sub2.c main1.c
4.将x2x、x2y目标文件用 ar工具生成1个 .a 静态库文件
ar crv libafile.a sub1.o sub2.o
5.用 gcc将 main函数的目标文件与此静态库文件进行链接
gcc main1.c libafile.a -o main1
使用情况
6.记录文件的大小
size main1
7.将x2x、x2y目标文件用 ar工具生成1个 .so 动态库文件
生成目标文件(xxx.o)
gcc -c -fpic sub1.c sub2.c
o文件创建动态库
gcc -shared -fPIC -o libsub.so sub1.o sub2.o
8.使用动态库
gcc main1.c libsub.so -o main2
sudo mv libsub.so /usr/lib
9.记录大小
a904352517@ubuntu:~/test$ size main1
text data bss dec hex filename
1986 616 8 2610 a32 main1
a904352517@ubuntu:~/test$ size main2
text data bss dec hex filename
2317 651 8 2872 b65 main2
大小对比