嵌入式02.2:运用静态库和动态库完成两整型函数加、减运算并进行比较

目录

一、运用静态库完成两整型数加减运算

 二、运用动态库完成两整型数加减运算

 三、对比


一、运用静态库完成两整型数加减运算

输入命令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。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值