linux静态库再次封装,静态库和动态库

1.什么是库

库lib是编译好的二进制代码,可以被操作系统载入内存执行,一般是预先编译好的函数的集合,可以通过头文件链接到库文件,执行已经编译好的代码段。

库一般分为静态库(static lib,在linux系统一般是.a文件)和动态库(dynamic lib,也叫共享库,在linux系统一般是.so文件)。二者的不同点在于被载入的时间不同:

静态库.a在编译的过程中会被编译到可执行文件,也就是说会增大可执行文件的体积。

动态库则是在执行的过程中才会去读取.so文件,不用编译进可执行程序,因此可执行程序体积较小。缺点是拷贝代码时如果没有.so文件可能会造成无法执行。‘

2.静态库

静态库

程序在编译阶段会把静态库的内容复制到目标文件中,在链接阶段将引用的静态库打包到可执行文件中。因此称为静态链接。这里可以发现,静态链接将静态库直接打包进入可执行文件,那么他的组织形式一定和.o文件类似。

实际上,一个静态库是一组目标文件的集合(.o),很多目标文件被打包成一个文件,并且直接参与链接。

静态库有以下特点:

1.静态库对函数的链接是在编译时完成的

2.程序在运行时不再需要静态库,因为对应的程序段已经被复制到原来的位置,移植方便。

3.可执行文件占用空间较大,因为静态库内容被复制进入了可执行文件编译结果。

创建静态库

linux静态库的创建命名规则:lib[library_name].a,lib为前缀,中间是库名,.a为扩展名。

创建静态库

现在有如下代码,一定要把头文件和函数体分开声明,否则使用静态库的时候没有头文件只能猜了哦。

**

* @file: unite_time.h

* @author: mattbaisteins@gmail.com

* @date: 2020-08-03

* @brif:

**/

#ifndef _UNITE_TIME_H

#define _UNITE_TIME_H

#include #include #include #include #include #define BUFFER_SIZE 4096

/*

* get time yymmdd, eg. 190803

* @param void

* @return string now_time

*/

std::string get_time();

#endif // end _UNITE_TIME_H

/**

* @file: unite_time.cpp

* @author: mattbaisteins@gmail.com

* @date: 2020-08-03

* @brif:

**/

#include

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值