之前学习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,即可运行程序

最新文章

  1. 简单设置,解决使用webpack前后端跨域发送cookie的问题
  2. php抽象工厂模式的研究
  3. Hadoop虽然强大,但不是万能的(CSDN)
  4. Treap和名次树
  5. ubuntu中一些配置文件含义
  6. Linux Runtime PM介绍【转】
  7. java中MessageDigest加密工具类
  8. Java程序员的发展前景
  9. java poi 导入excel
  10. angular4.0单个标签不能同时使用ngFor和ngIf
  11. 【Java基础】【14正则表达式&常用工具类】
  12. P4177 [CEOI2008]order(网络流)最大权闭合子图
  13. HttpServletRequest.getContextPath()取得的路径
  14. oracle数据库的简单操作
  15. RedisCacheManager设置Value序列化器技巧
  16. 另辟蹊径 直取通州的“墨迹天气”APP应用的成功故事
  17. Bitfinex API
  18. lzo文件压缩,解压
  19. python之函数的参数
  20. SqlServer存储过程(增删改查)

热门文章

  1. 170228、Linux操作系统安装ELK stack日志管理系统--(1)Logstash和Filebeat的安装与使用
  2. HDU 1875 畅通工程再续(kruskal)
  3. pip安装Scrapy框架报错
  4. python相关的报错处理
  5. Java 之Object 类
  6. Python获取指定目录下所有子目录、所有文件名
  7. 如何实现关系表的级联删除(ON DELETE CASCADE的用法)
  8. MySQL之存储引擎(Day39)
  9. Linux用户、群组及权限
  10. Rest_framework-3