C/C++跨平台开发1-windows和linux中的类库

基本概念:

什么是库:

在windows平台和linux平台下都大量存在着库。

本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。

 

静态库:在程序链接的时候使用,链接器会将程序中使用的函数代码从库文件中拷贝到应用程序中。

一旦链接完成,在执行程序的时候就不需要静态库了。

由于每个使用静态库的应用程序都需要拷贝所用函数的代码,所以静态链接的文件会比较大。

 

动态库(共享库):程序的链接时候并不像静态库那样在拷贝使用函数的代码,而只是作些标记。

然后在程序开始启动运行的时候,动态地加载所需模块。

所以,应用程序在运行的时候仍然需要共享库的支持。

 

 

WINDOWS:

在windows中,

静态库表现为.lib文件;

动态库表现为.dll文件,还有一个.lib文件包含被dll导出(使用__declspec(dllexport))的函数名称和位置等信息。.lib只在编译时需要,运行时不需要。

该伴生.lib文件在cmake中被称为ARCHIVE,需要注意的是Cmake生成动态库(shared)时,如果没有任何东西被__declspec(dllexport)导出将不会生成.lib文件。

 

LINUX:

在linux中,

静态库通常表现为.a文件;

动态库表现为.so文件;

总结:

发布类库通常以动态库(共享库)的形式发布,

在windows中、动态库发布项一般包括:

include:保存用到的头文件;

bin:保存.dll文件;

lib:保存动态库对应的.lib文件;

 

在linux中、动态库发布项一般包括:

include:保存用到的头文件;

lib:保存.so文件;

 

posted @ 2023-02-18 16:38  陈百川  阅读(41)  评论(0)    收藏  举报