C++:C++编译过程:看完还不懂C++编译过程来捶我

article/2025/9/24 11:35:29

1:先看图

2:一个C++源文件从文本到可执行文件经历的过程: gcc  Hello.cpp

  1. 预处理阶段:gcc -E hello.c  -o hello.i     对源代码文件中包含关系(头文件),预编译语句(宏定义)进行分析和替换,生成预编译文件。
  2. 编译阶段:gcc -s hello.i   -o  hello.s    将经过预处理后的预编译文件转换成特定汇编代码(编译原理相关,词法分析,语法分析,语义分析等),生成汇编文件。
  3. 链接阶段: gcc hello.o -o hello    将多个目标文件及所需要的库打包连接成最终的可执行目标文件(或库文件以供其他程序使用)

3:.c  .cc   .cpp 和 .h  .hpp  .inl 这些后缀名都有什么区别 

  1. C中:头文件后缀名 .h, 源文件后缀名 .c
  2. C++ 中: 头文件后缀名 .h  .hpp .hxx  ,源文件后缀名为:  .cpp    .cc  .cxx  
  3. .h和.hpp  的区别: *.h  里面只有声明,没有实现, 而 *.hpp 里面既有声明也有实现,后者可以减少 .cpp 数量,适合用来编写公用的 开源库
  4. inl 文件是 内联函数的源文件,内联函数通常在 C++头文件中实现,但有的时候,内联函数较多或者出于一些别的考虑(比如:头文件看起来更加简洁)往往会将这部分具体定义的代码添加到  INL文件中,然后在该头文件的末尾将其用  #include 引入。 由此也可以看到  inl 文件的一个用法影子  ------模板函数,模板类的定义的代码的存放。

4:gcc 和g++ 区别 

  • 简单来说:gcc 和g++都是 GNU组织的一个编译器,都可以编译C代码与 C++代码。但是,后缀为 .c的, gcc 把它当做 C程序,而g++当做 C++程序;后缀为 .cpp 的,两者都会认为是 C++程序。
  • 编译阶段:g++会调用gcc ,对于C++代码,两者是等价的,但是因为gcc 命令不能自动和C++程序使用的库联接,所以通常使用 g++来完成链接
  • gcc 编译cpp 可以使用命令:  gcc main.cpp -lstdc++

5: 静态链接,动态链接具体做了什么 

  • 静态链接是在形成可执行程序前,而动态链接的进行则是在程序执行时链接
  • 静态链接浪费空间,这是由于多进程情况下,每个进程都要保持静态链接函数的副本,更新困难,当链接的众多目标文件有一个改变后,整个程序都要重新链接才能使用新的版本,但是静态链接运行效率高。
  • 动态链接当系统多次使用同一个目标文件时,只需要加载一次即可,节省内存空间,程序升级变得容易,当升级某个共享模块时,只需要简单的将旧目标文件替换掉,程序下次运行时,新版目标文件会被自动装载到内存并链接起来,即完成升级
  • 静态链接时以目标文件为单位,将各个目标文件连接起来形成可执行文件
  • 动态链接的基本思想是把程序按照模块拆分成各个相对独立部分,在程序运行时才将他们链接在一起形成一个完成的程序,而不是像静态链接一样把所有程序模块都链接成一个单独的可执行文件。


http://chatgpt.dhexx.cn/article/O0grFZkU.shtml

相关文章

h计算机软件指什么,HXX 文件扩展名: 它是什么以及如何打开它?

解决难以打开 HXX 文件的问题 打开 HXX 文件过程中所遇到的常见问题 MacroMates TextMate 消失 尝试打开 HXX 时,你会遇到一条错误消息,例如 “%%os%% 无法打开 HXX 文件”。 如果是这种情况,通常是因为 你的计算机上没有安装 MacroMates Tex…

神器octotree

在Github上查看源代码的体验十分糟糕,尤其是从一个目录跳转到另一个目录的时候,非常麻烦。 直到遇到这款神器,相见恨晚!! 具体安装及使用步骤参考: https://www.cnblogs.com/12yang-ting/p/7485264.html …

有用的Chrome扩展介绍 - Octotree - GitHub code tree

明细: 安装之后,Github网站左边会自动出现类似Visual Studio Code的代码显示方式,可以通过树形结构方便地浏览代码,无需重复点击文件夹进入。 树形结构里的图标可以使用各种不同的风格显示: 快捷键:上箭头…

Octotree在GitHub中出错(已解决)

谷歌插件真的是很方便,像Octotree让我们github中的项目浏览起来更加条理,如图 但是当我在github中频繁的切换文件夹的时候,Outotree开始报错,也不显示目录结构,将错误代码放到谷歌翻译如下。 我理解的意思是github需…

Octotree在GitHub中出错

使用octotree 出现Error: Connection error octotree解决办法 解决方法:需要在github设置访问token 登录github,打开https://github.com/settings/profile 依次点击 Settings -> Developer settings -> Personal access tokens -> Generate n…

google扩展工具Octotree使用(2020-09-01)

不知道近期是不是改版了,反正我的需要github Acess Token权限设置。(最近csdn出问题了,图片不能居中,勉强看) 1.从google商店添加软件 2.打开github刷新并配置 (1)点钥匙的地方 (2…

Octotree访问私有仓库:Error: Private repository

问题 在GitHub私有仓库中使用Octotree时出现下面情况: 这个是因为我们需要在GitHub中给Octotree设置一个访问令牌 解决 在GitHub中:Settings -> Developer settings -> Personal access tokens -> Generate new token 创建令牌 设置名称Oc…

基于 Octotree 的[码云]文件树插件

之前一直在用github上面的Octotree,现在在用gitee(主要是github的访问速度太慢了)。   现在主要转到了gitee上面了,那么有没有基于 Octotree 的[码云]文件树插件呢,当然是有的,下面就进行安装。 1.基于 O…

Octotree 神器 tips

1. 注册一个Gitlab的帐号,并登录进去 2.打开页面会看到这样一个图片 3.安装完插件,点击上面红色方框的内容,即可,效果图如下

Octotree Chrome插件离线安装 树形展示插件

Octotree 是国外程序员Buu Nguyen 做的一个 Chrome 插件。安装之后,可以以左侧的树形结构浏览代码,非常nice 牛啤 1、GitHub 树形展示插件 下载地址附上:https://www.crx4chrome.com/crx/271883/ 2、Gitee 树形展示插件 https://gitee.co…

好用的chrome插件之Octotree

github上经常要浏览代码。那么如何像在IDE 上一样浏览代码呢。 这里推荐一款不错的插件Octotree 如下,选择vscode的风格浏览github上vue的源码,是不是很happy 点击设置,进行设置不同的风格 注意:和vscode不同的是。vscode上双击…

chrome强烈推荐安装Octotree插件

chrome强烈推荐安装Octotree插件 插件下载网站 说明: 这是一个很好的谷歌浏览器插件下载网站,界面很清新 https://chrome.zzzmh.cn/ 简介 Octotree是专门为github设计的,可以做到将github项目结构在侧边展示(在线的,无需下载到…

GitHub:Octotree与GitHub1s插件的介绍与使用

我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。 如果小伙伴们觉得我的文章不错,记得一键三连,感谢~ 文章目录 一、前言二、插件介绍2.1、Octotree2.2、GitHub1s 3、解决GitHub1s插件请求次数受限问题 一、前言 …

Octotree 下载安装

类型:谷歌插件 优势:像 IDE 那样方便地浏览代码,如下图。 下载地址:http://www.cnplugins.com/devtool/octotree/download.html。 安装步骤:https://www.cnblogs.com/12yang-ting/p/7485264.html。

Chrome安装Octotree插件

被安利了款便于查看github代码的chrome 插件 1.下载.crx格式插件 可用的插件下载地址址: https://crxdl.com/ http://chromecj.com/ http://www.cnplugins.com/ 2.通过Chrome扩展插件的ID或名字搜索下载 3.mac 解压插件 命令行解压.crx文件 cd .crx所在文件夹…

Octotree插件安装及API limit exceeded报错

Octotree插件的安装:github工具:Octotree安装和使用教程 使用Octotree插件阅读github上代码时出现API limit exceeded报错:API limit exceeded,You have exceeded the GitHub API rate limit. Please go to Settings to login wit…

Octotree插件

推荐理由 直接在Chrome侧边栏向打开文件夹一样的查看别人的项目。

github 安装浏览器导航插件Octotree

Octotree能够读取github目录内容在右侧显示导航栏,可以方便阅读,不用再点来点去的进行阅读了。 Octotree分为普通版和专业版,我们用用普通版就行了因为是免费的。 Octotree支持的浏览器:Chrome, Firefox, Opera , Safari 安装方…

Github 插件之 Octotree 报错介绍与解决

Github 插件之 Octotree 报错介绍与解决_ABin-阿斌的博客-CSDN博客c 参考了这个博主的方法,有用,但是一直还是有错,建议移除所有token,再关闭google,重新打开goole浏览器,打开octotree,再zai重新配置一遍新…