静态库与动态库

本文介绍了库文件的基本概念及其在软件开发中的作用,并详细解释了静态链接与动态链接的区别。此外,还提供了在Linux环境下如何生成静态库与动态库的具体步骤。
>>基本概念:
1、实际应用中,没有哪个程序需要从0开始写,一些常用的函数或者变量等可以独立放在一些“公共文件”中。库文件存在的意义就是为了对代码高效的“重复利用”。
2、库文件是已经一些成熟的二进制代码文件,但一般不能独立运行。
3、库文件既可以是行业标准指定的一些“标准库”文件,也可以是用户自己编制的“用户库”文件。
4、根据链接方式分为静态库(静态链接)与动态库(动态链接)。
5、静态库中不能再含有其他静态库或者动态库,而动态库中则可以嵌套其他静态库与动态库。
6、Linux下库文件一般在路径/lib和/usr/lib下。
>>静态链接与动态链接
1、静态链接:是在编译链接阶段就将需要引用的代码插入到用户程序中。其优点是独立性好(一旦完成静态链接,静态库就不再被当前用户程序所需要),缺点是可执行程序较大。
2、动态链接:是在程序运行时才将需要引用的代码插入到用户程序(编译链接时只是将动态库文件的地址插入用户程序中),运行完毕自动卸载动态库。其优点是程序较小(重复调用的代码只存在动态库中,不必在用户程序中多次出现),缺点是需要安装动态库(如未能正确找到动态库,程序将无法正确运行)。
>>生成静态库
1、Linux下静态库命名方式为libxxxx.a,其中xxxx为文件名。
2、 gcc -c test.c -o test.o  编译生成目标文件
ar cqs libtest.a test.o 生成静态库文件(ar即archive)
gcc test.c libtest.a -o test 生产可执行文件
>>生成动态库
1、动态库又称为共享库。Linux下动态库命名方式为libxxxx.so.major.minor其中xxxx为文件名、major为主版本号、minor为副版本号。
2、gcc -c test.c -o test.o
gcc -shared -Wall -fPIC test.o -o libtest.so生成动态库文件
(-shared表示生成动态链接库,-Wall,-fPIC表示编译成位置独立即与地址无关的代码,)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值