首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C++100问】CC++程序执行过程详解之预处理、编译、汇编、链接和执行,以及g++_gcc的安装使用

1、正文 C/C++的编译链接过程是怎么样的? 如果要把我们编写的一个程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行预处理、编译、汇编和链接。...右键【我的电脑】,点击【属性】,然后【高级系统设置】,然后【环境变量】,然后【编辑】用户环境变量,然后【编辑】,然后一顿【确认】。...输 gcc -v 可以显示出 gcc 的版本。如果显示出来的版本与你刚下的不同/更老,说明 Path 里原本有老版本的编译器,可能是安装其它IDE时装上的。...则需要去掉 Path 里原来的那一个 gcc 的路径。 3、例子 来看一个例子,验证整个过程。...1、✏ 切换目录 在这里插入图片描述 2、✏ 验证过程 4、总结 C/C++编译的整个过程是非常复杂的,里面涉及到的编译器知识、硬件知识、工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Linux笔记】make工程管理工具(一)

    1、如何编译具有多个源码(.c文件)的工程 上一篇笔记写了如何使用gcc的编译命令编译:【Linux笔记】Linux下编译C程序。...当源文件较少时,使用gcc编译命令编译就比较方便,在gcc编译命令中依次列出各个源文件就好,比如: gcc src1.c src2.c src3.c src4.c -o src 把src1.c、src2...2、怎么使用make工具来编译我们的C工程呢 平常,在技术的学习时,我习惯于先把要学的技术、原理用起来,再进一步去了解这个技术、原理,有进一步的学习之后,然后再进一步的去进行应用,即用->学->用。...再或者,想看到我们平时所说的“编译”各个过程,我们可以把Makefile文件修改成: ? 然后使用make工具进行解释: ?...其中,关于关于源文件至生成可执行文件经过哪几个过程,可查看往期笔记: 【C语言笔记】C语言编译的过程 以上就是本篇笔记的分享,主要介绍如何使用make工具来编译我们的c工程如有错误,欢迎指出!

    1.9K20

    如何进行环境配置

    最常用的免费可用的编译器是 GNU 的 C/C++ 编译器,如果您使用的是 HP 或 Solaris,则可以使用各自操作系统上的编译器。...以下部分将指导您如何在不同的操作系统上安装 GNU 的 C/C++ 编译器。这里同时提到 C/C++,主要是因为 GNU 的 gcc 编译器适合于 C 和 C++ 编程语言。...安装 GNU 的 C/C++ 编译器 UNIX/Linux 上的安装 如果您使用的是 Linux 或 UNIX,请在命令行使用下面的命令来检查您的系统上是否安装了 GCC: $ g++ -v 如果您的计算机上已经安装了...在 Cloud Studio 中运行 C++ 程序 {#cs-cpp} C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。...它被认为是一种中级语言,它综合了高级语言和低级语言的特点。C++ 是一种编译型语言 C++ 代码需要通过 编译器 转为机器码才能够由 CPU 运行。

    1.2K20

    Linux基础——Linux开发工具(中)_gccg++

    前言:在上一篇我们简单介绍了yum,vim的一些常用的指令和模式,现在让我们来进一步了解其他的Linux环境基础开发工具gcc/g++,gdb。...如果对前面yum和vim有什么不懂的建议回顾去回顾上期知识!!! Linux开发工具(yum, vim) 首先让我们来初步了解一下本篇的内容: 1. 学习gcc/g++,并能学会如何使用 2....Linux编译器-gcc/g++ 首先,让我们先来分别了解一下彼此在GNU的作用。...: 指令:gcc -E test.c -o test.i -E选项的作用是让gcc/g++在预处理结束后停止编译过程, 生成.i文件 我们直接进入探索。... 编号:禁用指定编号的断点 enable 编号:启用指定编号的断点 Linux调试器-gdb我们就介绍到这里,调试器需要大家多去使用才能更好的理解与记忆 4.

    16410

    如何进行内存设置

    最常用的免费可用的编译器是 GNU 的 C/C++ 编译器,如果您使用的是 HP 或 Solaris,则可以使用各自操作系统上的编译器。...以下部分将指导您如何在不同的操作系统上安装 GNU 的 C/C++ 编译器。这里同时提到 C/C++,主要是因为 GNU 的 gcc 编译器适合于 C 和 C++ 编程语言。...安装 GNU 的 C/C++ 编译器 UNIX/Linux 上的安装 如果您使用的是 Linux 或 UNIX,请在命令行使用下面的命令来检查您的系统上是否安装了 GCC: $ g++ -v 如果您的计算机上已经安装了...---- 在 Cloud Studio 中运行 C++ 程序 {#cs-cpp} C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。...它被认为是一种中级语言,它综合了高级语言和低级语言的特点。C++ 是一种编译型语言 C++ 代码需要通过 编译器 转为机器码才能够由 CPU 运行。

    1.3K20

    操作系统(4)实验0——准备知识、基本内联汇编、扩展内联汇编

    用户进程管理子系统,用于了解用户态进程创建、执行、切换和结束的动态管理过程,了解在用户态通过系统调用得到内核态的内核服务的过程 处理器调度子系统,用于理解操作系统的调度过程和调度算法 同步互斥与进程间通信子系统...,了解进程间如何进行信息交换和共享,并了解同步互斥的具体实现以及对系统性能的影响,研究死锁产生的原因,以及如何避免死锁 文件系统,了解文件系统的具体实现,与进程管理等的关系,了解缓存对操作系统IO访问的性能改进...,了解虚拟文件系统(VFS)、buffer cache和disk driver之间的关系 最终建设: 实验环境 建议在虚拟机中使用Ubuntu 16.04来做实验(其实用18或者更新的也行,但是我还是习惯...开发OS实验的简单步骤 gcc基本用法 此处忽略掉编译C部分,因为我懂且因为这是我的笔记(傲娇脸)。...基本内联汇编 在进一步介绍之前先说明下什么是“内联”: 上图截取自GCC内联汇编基础。

    72920

    dll 劫持和应用

    2021年1月,网上公开了 SUNBURST 后门植入的分析,后续又有安全研究者对植入细节进一步的优化,根据这些内容我展开了对 dll 劫持的学习和研究。...编译完成,最后再还原该文件,完成后门的植入;如下图: [1.SUNBURST后门植入的流程] 当然这个过程中还需要很多技术细节来保证后门与原始项目代码之间的兼容性,以及植入过程的隐蔽性等等;后续就有安全研究者说到在...使用 Tcc 中的测试代码进行编译,然后在 Gcc 目录下添加 gcc.exe.local 文件夹,并将 msvcrt.dll / msvcrt_origin.dll 放在文件夹下,如下: [13.Gcc...目录下dll重定向文件夹] 运行演示如下: [14.Gcc劫持演示] 9 总结 在这里感谢 DAWU@知道创宇404实验室 小伙伴在我学习研究过程中提供的帮助。...实际上文中提到的对编译器进行"供应链攻击"的方法还可以进一步优化,因为我们的方法会重新写入文件,从而会修改文件的写入时间,可能会暴露攻击行为;我们还可以通过逆向分析编译器的执行流程,更加精确的劫持读文件的函数

    78430

    编译WebAssembly版本的FFmpeg(ffmpeg.wasm):(1)准备

    在这一部分中,你将了解到: 这个系列的背景 如何用Docker构建原生的FFmpeg(以及在MacOS中不使用docker)。...本系列的背景 这个系列的文章旨在为以下目的服务: 为那些想学习如何使用Emscripten将C/C++库编译成JavaScript的人提供指南(希望是目前最有用、最详细的指南) 个人笔记 为什么是FFmpeg...(Kagami/ffmpeg.js在2020年4月继续其开发) 我考虑过也许可以接管其中一个仓库,但由于这些年变化太大,我决定从头开始,同时写了这个系列的教程,帮助人们学习如何在现实(工程)世界的C/C...在我写这个文章的时候,FFmpeg的最新稳定版本是n4.3.1,所以我们将在文章中使用这个版本。...根据你的网速和电脑的硬件规格,可能需要10~30分钟才能完成编译。 在编译过程中看到大量的警告是正常的,因为gcc 9引入了更多的限制条件。 它应该需要一些时间来编译本地的FFmpeg。

    2.8K82

    猫头虎分享:最新 TensorFlow 各版本下载地址、对应 Python 版本、编译和运行环境版本号大全

    常见问题 Q&A Q1: 如何确定我的 GPU 是否支持 TensorFlow?...运行以下命令检查 CUDA 计算能力: nvidia-smi Q2: 为什么安装 TensorFlow 时提示不支持我的 Python 版本?...确保 Python 版本符合 TensorFlow 要求,可使用以下命令降级: conda install python=3.x Q3: 如何验证 TensorFlow 是否安装成功?...__version__) 未来趋势与总结 随着 AI 技术的飞速发展,TensorFlow 作为主流框架将继续迭代优化。未来,它可能会进一步增强对 分布式训练、量子计算 和 移动设备 的支持。...如果你想了解 TensorFlow 新版本的功能特性和使用教程,欢迎关注 猫头虎技术团队!

    1.4K20

    嵌入式Linux要学哪些东西?你真的造吗?

    这时我们需要知道如何编译一个程序,需要知道编译器及一些其他工具的使用,比如GCC,在开发的过程中我们为了提供工作效率还会用到Make,Shell等,为了能够很好的管理我们代码的不同版本,我们还需要知道什么是...5、当我们再进一步的话,我们会发现我们什么有很多的东西都运行的是Linux系统,可是他们和我的PC运行的Linux有什么区别呢,为什么我电 脑要用风扇而手机不用风扇呢,我们打开网页查找手机的详细参数的时候...,会看到Cortex-A15 、四核 、ARM等等字眼,什么是ARM,什么是Cortex-A15,我们需要进一步的了解。...,才能更好的驱动它。...本人认为到第九点你已经是一个高级的嵌入式Linux人物 了,工资待遇我已经不用说,咋说也得15K往上了,如果做管理30K也是有的。

    1.5K10

    初识Linux · 有关gccg++

    前言: 继上文介绍了vim 和 yum,相当于介绍了 文本编译器,我们可以利用vim写代码,那么写代码的我们了解了,现在应该了解编译器了吧?...1 gcc和g++ 我们没有了解到gcc和g++之前,在Linux上甚至没有办法编辑代码,那么现在我们可以了,gcc是一个只能编辑C语言代码的编辑器,我们使用的时候大概率会出现版本问题,g++同理,是一个编辑...2 翻译过程 我们写好了代码,编译器成功编译了,我们不免会好奇,代码是如何经过一层一层的编译,逐渐变成了一个一个我们不认识的字符的?...而语言的发展是二进制到汇编的,所以,过程是C语言到汇编到二进制,二进制编译X语言的编译器,使得B.exe变成一个完美的X语言的编译器这个过程叫做编译器的自举。 对于历史故事我们应该了解一下。...我们是否思考过为什么我在文本编译器里面写上了printf,引用一个头文件就可以实现打印了,难道是只需要一个头文件就可以使用函数吗?

    11410

    叙述 C语言编译

    @(C语言)[code] 用一段简单的代码,探讨下从C代码到最终可执行文件的编译过程,追根究底。 偶尔了解下底层,也就没那么多莫名其妙了。...编译的过程 gcc 的编译流程分为四个步骤: 计算机系统设计基本原则:层次化和抽象。 ? 编译flow 编写一个最简单的程序 hello.c,以此为例,看看各个过程做了什么事情。...编译器的优化 编译会有一个中间过程,进行优化(前端)后再最终输出汇编代码(后端), gcc 可以通过以下命令查看, 感觉不是给人类看的。...$ gcc -S -fdump-rtl-expand hello.c 使用clang(编译器)也可以查看输出中间过程: $ clang-3.5 -S -emit-llvm hello.c clang...我想起工作上遇到的,使用for 进行简单延时匹配一些硬件操作的时序,悲剧了. (输出结果我就不贴上来了。) 中间层优化是和体系代码无关的情况下进行的,优化后再调用对应体系的后端生成汇编代码。

    1.8K11

    听说C语言高手都用txt写代码?

    坊间传闻高手都喜欢用记事本写代码,那么问题来了,我们以C语言为例,如何用记事本编译运行呢?...其实最简单的方式就是安装GCC编译器,在记事本编写C语言程序,然后再在命令行用GCC编译运行,下面我简单介绍一下实现过程,感兴趣的朋友可以尝试一下: 安装GCC编译器 这里推荐直接安装MinGW,一个集成编译调试工具...下载的话,直接到官网上下载即可,一个exe文件,直接双击安装就行,安装后主目录如下,这里需要将bin目录添加到环境变量中,后面在cmd窗口就可以直接使用GCC命令编译C语言程序: 打开cmd窗口,输入...“gcc -v”命令,如果输出以下信息,则说明GCC命令配置成功: 免责声明:本文系网络整理,侵删 编译运行程序 GCC命令配置完成后,接着就是编译运行C语言程序了,这里为了方便演示,我用记事本新建了一个...总的来说,整个过程非常简单,主要就是配置GCC编译器,只要你熟悉一下操作过程,就很容易实现。 当然还有其他很多方法实现,大家可以自己去了解一下。

    2.7K2218

    STM32高级开发——gcc-arm-none-eabi

    但缺点也显而易见:它阻碍了童鞋们对编译器以及编译过程的理解,也在集成化的过程中缺少了很多可选择的高级功能。...经过上面的介绍我想大家已经理解了一个集成开发环境的构成,而我们所讲的gcc-arm-none-eabi就是其中的编译器的功能,更专业的,在嵌入式开发中我们一般将它叫做工具链。...在下载的过程中建议大家去网站的首页看看,随便逛逛了解一下gcc-arm-none-eabi。...注意以上操作,从source 开始请使用一个终端,不要关闭,否则可能出错:无法找到工具链。实际按理说source指令和重启的效果是一样的,但在我安装的过程中却出错了,重启之后才变正常了。...如果大家不明白,.o*是什么作用,建议大家去看一些关于编译过程和原理的介绍。

    1.4K30

    【Linux系统编程】Linux下的编译器——gccg++的使用 及 动态库和静态库的认识

    概念 我们先来简单了解一下它们的概念: gcc (GNU Compiler Collection) 和 g++ 是 Linux 系统上最常用的编译器。它们是 GNU 组织开发的一套开源编译器工具集。...gcc 和 g++ 的选项基本上都是一样的,我们这里就重点以gcc为例来进行讲解。 2. gcc 的使用 通过上面的了解我们知道gcc 和 g++ 其实就是Linux系统上的编译器。...我先来创建一个源文件myfile.c 对于这样一个源文件,如果我们直接gcc编译的话,他会直接做完整个翻译过程,自动生成一个名为a.out的可执行文件 我们就可以直接执行输出结果。...那上面我们演示的是从源文件直接生成可执行文件,那如果我想让它执行完预处理过程就停下来呢?...2.2 编译 编译过程,就是把预处理之后的C语言代码转换成汇编代码 那如果我想让编译结束停下来呢?

    1.7K10

    使用xmake构建c++20 modules

    的相关介绍我就不多说了,这边主要还是介绍下xmake下如何去构建c++modules项目,我们先来看一个简单的例子: target("hello") set_kind("binary")...msvc 对于msvc下的处理,我就不细说了,其实整个逻辑是差不多的,我就直接贴下执行的命令过程吧: cl.exe -c /experimental:module /module:interface /...原本是想把gcc也支持进来着的,后来发现gcc对于c++modules的支持,还在独立的分支维护,都还没有进入master,如果要使用,还得单独为此checkout cxx-modules分支代码来编译一份支持...而且里面的flags使用经常在变动,感觉还没有完全稳定下来,因此这里我懒的去折腾了,等什么时候gcc正式版支持了再说吧。...如果要进一步了解gcc的modules-ts实现进展,请参考:https://gcc.gnu.org/wiki/cxx-modules 其他例子 xmake项目下还内置了不少跟c++modules相关的工程

    1.8K40

    C语言---静态库VS动态库

    在编程的过程中,使用已经封装好的库函数是十分方便的,也是十分高效的,因此会使用函数库是很重要的。...背景知识 我们要先了解一下源文件到可执行文件的编译过程如下图: ? 预编译 预编译是使用预编译器cpp进行处理.c源文件和.h头文件,最终生成一个.i的文件。...编译过程等价如下命令: gcc -S hello.i -o hello.s 编译过程是整个程序构建的核心部分,也是最复杂的部分之一。...链接静态库 上面我们说了静态库是如何生成的,然后我们说一下静态库怎么使用。静态库是要编译进可执行文件的,在程序运行的环境中,并不需要静态库的存在。...所以在编译程序的时候使用下面方式编译: gcc mian.c -o mian -L ./ -lhello 同样,-L后面是库文件的路径,最好是用绝对路径。-l加上去掉lib的库名。

    9K45

    深入浅出GCC编译器

    本文将带你迈入GCC的大门,了解一个C源文件是如何在GCC编译工具链的加工下成为一个可执行性文件的,并详细讲解GCC编译参数以及可能会用到的其他知识。...,每个选项都会完成一定的优化内容,这里就不深入探讨了,只需要了解 O1-O3 的使用即可)。...(7)-Wall 显示更多警告信息 当GCC在编译过程中检查出错误的话,它就会中止编译,并报错。...总结 通过这篇文章你是不是对程序的编译过程和GCC编译工具链有了更加深刻的认识呢,其实GCC也没什么神秘的吧,哈哈哈哈。...有句诗我非常喜欢“纸上得来终觉浅,觉知此事要躬行”,对于GCC的学习绝不能止步于这篇文章,一定要打开自己的虚拟机或者双系统进入你的Linux,一个命令一个命令的敲,一个文件一个文件的看,动手实践才能把知识变成自己的

    53210

    CPU是如何运行程序的

    编译执行 汇编语言和机器语言是一一对应的 内存中的每个存储空间都有其对应的独一无二的地址 CPU时钟周期:取出指令、分析指令、执行指令这三个过程 文章概要 计算机工作模式 CPU和内存如何配合工作的 机器语言...根据对高级语言转换的过程中是否生成「机器代码」,把执行高级语言分为 解释执行 编译执行 解释执行 先将源代码通过解析器编译成中间代码,之后「直接」使用解释器解释执行中间代码,然后「直接输出结果」。...必须给出完整程序,编译器通过几次扫描,翻译,编排,链接,变成exe文件执行。 CPU如何执行程序 我们通过针对一段C代码,进行编译执行,来看看CPU是如何执行程序的。...,将其转换为二进制的机器码, CPU 才能按照顺序执行编译后的机器码。...通过 GCC 编译器将 C 代码编译成二进制文件。gcc -O0 -o code_prog test.c。

    1.4K20
    领券