静态和动态函数库设计

简介

函数库分为静态函数库动态函数库,Linux下的应用程序使用的主要函数库均存放于/lib 和 /usr/lib 目录下。其中动态函数库命名方式为*.so.*,静态函数库的命名方式为 *.a.

静态链接库

优点:使用静态链接库的代码在链接时全部被copy到程序中。这样程序不用依靠系统的库(用 -static 参数编译的程序与不加,用ls -l 文件 来查看文件大小)
缺点:当有多个进程在内存中同时运行,并且使用相同的库函数,那么就会有多份拷贝,这就是对空间的浪费

制作静态链接库(制作库 age.a)

  1. 新建age.c
    age.c

  2. 新建age.h —声明一下 函数void myage(int age)

  3. 只编译不连接age.c得到age.o (gcc -c age.c -o age.o)

  4. ar cqs libage.a age.o ,生成库文件 ,注意库文件前缀一定是lib

  5. 将制作好的 libage.a 复制到/usr/lib

  6. 新建一个myage.c
    这里写图片描述

  7. 链接刚创建的函数库,gcc -myage.c -lage -o myage. 注意“-l库”-> “-lage” ,要去掉libage.a的前缀 lib 和 .a。因为GCC默认只会链接C函数库

动态函数库的设计

还是以上面的文件为例
修改第四步为:****gcc -shared -fPIC age.o libage.so
-fPIC:使输出的对象模块是按照可重定位地址方式生成的
shared:指明产生动态链接库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WAF001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值