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进行主从配置.下面说一下主 ...
随机推荐
- openEuler欧拉部署Redis
一.系统优化 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 关闭selinux sed -ri 's/SELINUX=enfor ...
- Flutter (2.5) - A splash screen was provided to Flutter, but this is deprecated
Flutter (2.5) - A splash screen was provided to Flutter, but this is deprecated 升级到Flutter 2.5 版本后,启 ...
- 执行docker-compose up -d时出现ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule
原因是因为防火墙关闭之后需要重启docker服务. 执行: service docker restart 即可.
- Ubuntu下安装和开启telnet
安装命令如下 sudo apt-get install openbsd-inetd sudo apt-get install telnetd sudo /etc/init.d/openbsd-in ...
- MessageConsumer
@Slf4j @Component public class MessageConsumer { @Autowired private PpcRequestMessageListener ppcReq ...
- [转]解决Android Studio初次配置可能会出现的Unkown Host问题
Unkown Host"杩欐槸鍦ㄤ富鏈哄悕瑙f瀽鏃堕 氬父鍑虹幇鐨勬殏鏃", You may need to adjust the proxy settings in Gradle ...
- 一款简单易用的印章设计工具 --(可转为ofd文件)
本人开发了一款印章设计软件:不但可以将印章保存为图片,而且可以保存为ofd格式文件. 将印章保存为ofd格式,有很多优势:占用资源少.缩放不失真.可添加元数据. 矢量化图形格式一般为svg.pdf.很 ...
- 外部H5唤起常用小程序链接规则整理
概述 我目前工作是全职做小程序开发,所负责的小程序需要发布抖音+快手+微信+支付宝四端,年底了,公司准备做一波营销活动,营销活动更好传播的话首选H5活动营销页,这就需要考虑怎么把用户从H5页面引入到我 ...
- 简单了解RPC实现原理-copy
核心框架类 /* * Copyright 2011 Alibaba.com All right reserved. This software is the * confidential and pr ...
- Redis(3)---Redis事务|主从复制
Redis事务 Redis 通过 MULTI .EXEC. DISCARD 和 WATCH 四个命令来实现事务功能. MULTI :标记一个事务块的开始. EXEC: 执行所有事务块内的命令. DI ...