之前学习C语言的时候都是用IDE类似CodeBlocks的工具写完直接编译运行的,今天突然心血来潮,自己下一个编译器,在命令行下,编译运行C++程序,了解一下编译过程。

一.安装编译器

首先你需要下载一个编译器,我选择的是GNU的mingw,附上下载地址https://sourceforge.net/projects/mingw/

最开始选择的是在线安装,但是因为网速太慢,安装速度感人,所以最后下载了压缩包。将压缩包解压,然后在系统环境变量中配置一下bin目录的路径即可。在命令行中使用命令gcc -v来测试是否配置成功。

二.编辑代码

首先通过命令行进入你准备要创建文件的目录下,然后通过记事本notepad命令创建并打开test.cpp,如果当前目录下有test.cpp会直接打开文件,如果没有会先创建文件再打开。

开始写一段C++程序

三.编译过程

编译过程分为四个步骤:预处理、编译、汇编、链接。

1.预处理

预处理主要处理源文件中的“#include”、“#define”等预处理命令

预处理主要完成的工作有:

(1)删除#define,展开宏;

(2)处理条件编译指令,预处理程序先判断条件,在根据条件修改源代码;

(3)删除注释;

(4)添加行号,以及文件名标识,便于调试

(5)删除“#include”,插入相应的头文件;

使用g++ -E test.cpp -o test.i命令,预处理后得到test.i文件

2.编译

生成汇编代码的过程,使用命令g++ -S test.i -o test.s生成汇编文件test.s文件,当然直接从test.cpp文件得到汇编文件也可以。

3.汇编

将汇编代码转化成机器指令,生成目标二进制代码。

使用命令g++ -c test.s -o test.o 生成test.o文件

4.链接

通过链接库文件,将目标文件转化成可执行文件

使用命令g++ test.o -o test.exe -L  所需库文件路径  其中L为link的缩写

当然,一般情况下,可以直接使用g++  test.cpp  -o test 就可以生成可执行程序了。

四.运行程序

最后使用命令test.exe,即可运行程序

Windows下使用MinGW在命令行编译运行C++程序的更多相关文章

  1. 终端命令行编译运行C#程序HelloWorld

    终端命令行编译运行C#程序HelloWorld 今天忽然有人问我,刚学习java程序的时候,一般老师都会建议我们从配置环境变量开始从命令行编译运行程序,那么学习c#的时候基本是直接安装visual s ...

  2. 【linux基础】使用命令行编译运行c++程序

    前言 在linux系统运行程序,小鹅知道的有3种编译方式,一种是直接命令行编译,一种是使用Cmake,一种是使用脚本文件(*.sh).本文介绍的是使用命令行编译. 使用过程 注意不同系统的编译器版本可 ...

  3. 命令行编译运行Java程序

  4. windows下使用mingw和msvc静态编译Qt5.15.xx

    windows下使用mingw和msvc静态编译Qt5.15.xx 下载并安装相关依赖软件 Python version 2.7 https://www.python.org/downloads/ ( ...

  5. 命令行编译运行Java

    首先要安装JDK,然后设置环境变量Path,添加C:\Program Files (x86)\Java\jdk1.8.0_66\bin 然后建立一个名为j.java的文件,里面加入如下代码: publ ...

  6. java 命令行 编译 运行程序

    学习java使用IDE前最好先用用命令行的javac.java来跑一跑简单的程序,这样能够熟悉一下包管理对.class文件路径的影响. 我们先写一段简单的代码: package com.csdn.lk ...

  7. java命令行编译运行、打包jar

    过程:java文件→class文件→exe执行文件 --------------------------------------------- 一.编译:从.java生成.class   (1)ecl ...

  8. Windows系统下用命令行编译C/C++程序过程总结

    转自:http://www.cnblogs.com/caikehe/archive/2013/01/12/2858017.html (1)先用记事本编写如下所示的代码,并另存为hello.cpp,假设 ...

  9. (转)JAVA路径问题及命令行编译运行基础(linux下)

    原地址: http://blog.csdn.net/biaobiaoqi/article/details/6846274 java的运行机制的基本概念: 源文件 也就是我们熟知的.java文件. 类文 ...

随机推荐

  1. jQuery.ajax jQuery.post

    $.ajax()函数依赖服务器提供的信息来处理返回的数据.如果服务器报告说返回的数据是XML,那么返回的结果就可以用普通的XML方法或者jQuery的选择器来遍历.如果见得到其他类型,比如HTML,则 ...

  2. table width 决定 td width

    w td width 有无在chrome edge ff 均未影响td实际宽度,td接近等比分配table width. <!doctype html> <html lang=&qu ...

  3. time/datetime/random/string/os/sys/shutil/zipfile/tarfile - 总结

    time 模块: time.time() #时间戳 time.localtime() #当前时间对象元组 time.localtime(123123) #根据时间戳的时间对象 time.mktime( ...

  4. HTTP请求 蜘蛛的 user-agent

    百度爬虫 * Baiduspider+(+http://www.baidu.com/search/spider.htm”) google爬虫 * Mozilla/5.0 (compatible; Go ...

  5. cookies设置时间

    默认cookies失效时间是直到关闭浏览器,cookies失效,也可以指定cookies时间. Response.Cookies("user_name").Expires=Date ...

  6. sql server dba之路

    转自:https://blog.csdn.net/dba_huangzj/article/details/7841441 在专职DBA工作一年过一个月以后,开通了CSDN的博客专栏,在第一篇文章中,我 ...

  7. python中decorator的用法及原理(一)

    0. 概念 什么叫装饰器,其实也可以叫做包装器.即对于一个既有的函数func(args),在调用它之前和之后,我们希望都做一些事情,把这个函数包装起来. Python中的装饰器分为两类:函数装饰器和类 ...

  8. MDK中One ELF Section per Function选项功能探究【转载】

    本文主要探讨的是MDK开发工具中One ELF Section per Function选项对于代码优化的作用及其实现的机制. 这里以EK-STM32F开发板的LCDDemo实验例程为例进行说明: 1 ...

  9. PAT 1081 Rational Sum[分子求和][比较]

    1081 Rational Sum (20 分) Given N rational numbers in the form numerator/denominator, you are suppose ...

  10. C#实现对图片文件的压缩、裁剪操作实例

    本文实例讲述了C#对图片文件的压缩.裁剪操作方法,在C#项目开发中非常有实用价值.分享给大家供大家参考.具体如下: 一般在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便 ...