首页 > 编程语言 >c++ 静态编译和动态编译

c++ 静态编译和动态编译

时间:2023-04-20 14:12:06浏览次数:37  
标签:静态 程序 c++ 编译 动态 程序代码 库函数

  C++是一种高级编程语言,它支持两种不同的编译方式:静态编译和动态编译。下面是它们的介绍:

静态编译

  静态编译是将程序代码和库函数一起编译成一个可执行文件的过程。在静态编译过程中,程序代码和库函数的代码被组合在一起,形成一个独立的可执行文件,该文件可以在任何系统上运行,因为它包含了所有所需的代码和库函数。

优点:

  • 程序在运行时不需要依赖任何外部库函数,因此可以保证程序的稳定性和可移植性。
  • 程序的性能通常比动态编译的程序要高,因为它不需要在运行时加载库函数。

缺点:

  • 程序的体积通常比较大,因为所有的库函数都被编译进了可执行文件中。
  • 如果库函数发生变化,需要重新编译整个程序。

动态编译

  动态编译是将程序代码编译成一个中间文件,该文件在程序运行时动态加载所需的库函数。在动态编译的过程中,程序代码被编译成一个中间文件,而不包括库函数的代码。在程序运行时,操作系统动态加载所需的库函数,将它们链接到程序中。

优点:

  • 可执行文件的体积比静态编译的程序要小。
  • 如果库函数发生变化,只需要重新编译库函数,而不需要重新编译整个程序。

缺点:

  • 程序在运行时需要依赖外部库函数,如果某个库函数无法找到或发生错误,程序就会崩溃。
  • 动态编译的程序在运行时需要加载库函数,因此性能可能比静态编译的程序略低。

标签:静态,程序,c++,编译,动态,程序代码,库函数
From: https://www.cnblogs.com/AngleLin/p/17336614.html

相关文章

  • C++ - UDP通信
    UDPUDP就比较简单了,步骤比tcp要少一些。连接过程图:  1).服务器1.初始化套接字库WORDwVersion;WSADATAwsaData;interr;​wVersion=MAKEWORD(1,1);2.创建套接字SOCKETsockSrv=socket(AF_INET,SOCK_DGRAM,0);3.绑定//SOCKADDR_INaddrSrv;省略了定......
  • C++ - TCP通信
    前言socket编程分为TCP和UDP两个模块,其中TCP是可靠的、安全的,常用于发送文件等,而UDP是不可靠的、不安全的,常用作视频通话等。如下图:头文件与库:#include<WinSock2.h>​#pragmacomment(lib,"ws2_32.lib")准备工作:创建工程后,首先右键工程,选择属性然后选择C/C++-预......
  • jad 命令行批量反编译
    下载地址:http://varaneckas.com/jad/ 解压放到jdkbin目录比如需求是要把org文件夹下及其子文件夹下所有的class文件反编译后放到src目录中,并保持package原始结构命令这样:jad-r-dsrc-sjava"org/**/*.class"-r表示保持原始package结构-dsrc表示output目录为当前的src目录-......
  • 使用 OpenCV4 和 C++ 构建计算机视觉项目:1~5
    原文:BuildingComputerVisionProjectswithOpenCV4andC++协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN计算机视觉译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。当别人说你没有底线的时候,你最好真的没有;当别人说你做过某些事的时候,你也最好真的做过。一、Open......
  • 修改maven3项目的默认的编译级别(compile level)
    评:听闻maven的鼎鼎大名打算在最近的一个项目中试下爽,结果遇到了这个问题,虽对项目影响不大,但做技术刨根问题是必须的了,少废话。1.cmd命令建立web项目:mvnarchetype:generate-DgroupId=biz.yunduo-DartifactId=dts-DpackageName=dts-DarchetypeArtifactId=maven-archetype-we......
  • c++输出格式控制
    一.控制符需要<iomanip>头文件常用:1.保留几位有效数字:setpricision(),括号里是保留的位数2.保留几位小数:setiosflags(ios::fixed)<<setpricision(),括号里是保留的位数(注意前面半句会影响此后所有setpricision()的用法,都变成保留小数位数,不只是这一句)(直接把前半句改成......
  • 刚开始如何模仿写C/C++程序的Makefile
    对于一般工程的C/C++程序,在利用Makefile文件对其进行编译遵守下面两个规则即可:即编写的Makefile文件中,不论最后的是库文件还是可执行文件。gcc通过-c选项,将所有的文件都编译成目标代码文件即可.o文件。之后通过将所有的.o文件链表得到一个可执行文件,或者库文件。......
  • SpringBoot静态文件映射问题
    如果遇到这种情况,检查静态文件(js/css/img)是不是在默认的static路径下,在查看application配置中的static-path-pattern:是否和前端映射路径完全相同,要是不相同则会造成访问不到......
  • Azure DevOps(一)基于 Net6.0 的 WPF 程序如何进行持续集成、持续编译
    一,引言我们是否正在为如何快速的编译、部署客户端应用程序而烦恼?这也是博主最近遇到的问题。目前博主所在公司主要做项目级的定制化开发,多以C/S架构的WPF程序为主,每次到了协助开发团队给实施团队编译好的要测试程序包时,就会出现多人协助,编译、打包好的二进制程序包pull......
  • 打卡 上课铃响之后 - C/C++ 多态
    如本章开篇所述,当小学里的上课铃响之后,学生(Student)、教师(Teacher)和校长(Principal)会对同一个消息表现出不同的行为。请设计Person、Student、Teacher以及Principal类,合理安排他们之间的继承关系并将所有类的bellRing()及析构函数设计为虚函数,使得下述代码可以正常执行并产生期望的......