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文件;
C/C++跨平台开发1-windows和linux中的类库的更多相关文章
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
由于ASP.NET Core框架在本质上就是由服务器和中间件构建的消息处理管道,所以在它上面构建的应用开发框架都是建立在某种类型的中间件上,整个ASP.NET Core MVC开发框架就是建立在用来实 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]
我们在<上篇>利用dotnet new命令创建了一个简单的控制台程序,接下来我们将它改造成一个ASP.NET Core应用.一个ASP.NET Core应用构建在ASP.NET Core框 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
由于ASP.NET Core框架在本质上就是由服务器和中间件构建的消息处理管道,所以在它上面构建的应用开发框架都是建立在某种类型的中间件上,整个ASP.NET Core MVC开发框架就是建立在用来实 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]
我们在<上篇>利用dotnet new命令创建了一个简单的控制台程序,接下来我们将它改造成一个ASP.NET Core应用.一个ASP.NET Core应用构建在ASP.NET Core框 ...
- windows和linux中搭建python集成开发环境IDE——如何设置多个python环境
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- 【转】windows和linux中搭建python集成开发环境IDE
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- 工具WinSCP:windows和Linux中进行文件传输
工具WinSCP:windows和Linux中进行文件传输 2016-09-21 [转自]使用WinSCP软件在windows和Linux中进行文件传输 当我们的开发机是Windows,服务器是Lin ...
- windows与linux中的mysql配置主从
最近在给学生讲解数据库的主从配置,由于学生电脑里面装的虚拟机是linux的,但是本机的系统是windows的,所以需要用windows中的mysql与linux中的mysql进行主从配置.下面说一下主 ...
随机推荐
- Day01 Markdown 学习笔记
Day01 Markdown 学习笔记 1.标题 n级标题 = n个"#" + 空格 + 标题名称 (最多6个) 2.文本 Hello World Hello World ...
- ASP.NET Core 中的 Request Feature
ASP.NET Core 中的 Request Feature https://docs.microsoft.com/en-us/aspnet/core/fundamentals/request-fe ...
- HttpClientFactory in ASP.NET Core 2.1 Part 1 介绍
HttpClientFactory in ASP.NET Core 2.1 Part 1 原文地址:https://www.stevejgordon.co.uk/introduction-to-htt ...
- Jackson ObjectMapper - 指定对象属性的序列化顺序
注释很有用,但在任何地方应用起来都会很痛苦.您可以配置整个 ObjectMapper 以这种方式工作 当前杰克逊版本: objectMapper.configure(MapperFeature.SOR ...
- logback高级特性使用(二) 自定义Pattern模板
原文链接:https://blog.csdn.net/chenjie2000/article/details/8892764 创建自定义格式转换符有两步: 1.写一个转换器类,继承ClassicCon ...
- Qt音视频开发31-Onvif抓拍图片
一.前言 抓拍是个很重要的功能,比如在报警视频联动中需要一张实时的图片,很多SDK不提供抓拍功能,而通过预览抓图,得到的图片已不具有实时性,那如何得到实时的图片呢?现在的IPC基本上都支持ONVIF协 ...
- 开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门
► 相关链接: ①MobileIMSDK-Uniapp端的详细介绍 ② MobileIMSDK-Uniapp端的开发手册new(* 精编PDF版) 一.理论知识准备 您需要对Uniapp和Vue开发有 ...
- 一套亿级用户的IM架构技术干货(上篇):整体架构、服务拆分等
1.引言 经历过稍有些规模的IM系统开发的同行们都有体会,要想实现大规模并发IM(比如亿级用户和数十亿日消息量这样的规模),在架构设计上需要一些额外的考虑,尤其是要解决用户高并发.服务高可用,架构和实 ...
- G1原理—1.G1回收器的分区机制
大纲 1.G1垃圾回收器的分区(Region大小+G1分区+Region过大过小和计算) 2.Region大小的计算原理(先转字节然后确定2的n次幂再通过1左移n位) 3.新生代分区及自动扩展(新生代 ...
- UWP 检查是否试用版模式
//老版本的方法: // var check= CurrentAppSimulator.LicenseInformation.IsActive && CurrentAppSimulat ...