GCC 概述:C 语言编译过程详解
Tags: C
Description: 关于 GCC 的个人笔记
GCC 概述
- 对于 GCC 6.1 以及之后的版本,默认使用的 C++ 标准是 C++ 14;使用 -std=c++11 来指定使用哪一个标准
- 将源代码编译为可执行程序的流程

- g++ 编译时使用 C++ 的标准库,而 gcc 默认使用 C 的标准库,g++ 等价于 gcc -xc++ -lstdc++ -shared-libgcc
- Linux 下可以使用 man gcc 命令查看帮助手册
GCC 的安装
- Windows 下安装 MinGW 即可
- gcc version 7.4.0 (GCC)
GCC 编译程序的步骤
- 预处理(pre-processing):
cpp hello.c > hello.i,将引入的头文件(#include)和定义的宏(#define)扩展到代码中 - 编译(compilation):
gcc -S hello.i,将预处理过的文件编译成汇编程序 - 汇编(assembly):
as -o hello.o hello.s,将汇编程序转换成目标文件,二进制格式,每一个源文件都需要产生一个目标文件 - 链接(linker):
ld -o hello.exe hello.o ...libraries...,将一个或多个目标文件连接成最终的可执行文件
GCC 常用参数
- --version 查看版本
- -v verbose(冗长的),输出编译的详细信息
- -std 指定标准
- -o 指定输出文件的名称
- -Wall 输出所有的警告信息
- -c 只将源文件编译为 object 文件(*.o),而不进行链接,之后可以使用
gcc -o myprog.exe file1.o file2.o将多个 object 文件连接成可执行文件 - -shared 编译为共享库(.dll,.so)
- -S 编译为汇编代码
参考
本文亦发布在:https://iamazing.cn/article/GCC-概述:C-语言编译过程详解
GCC 概述:C 语言编译过程详解的更多相关文章
- C语言编译过程详解
前言 C语言程序从源代码到二进制行程序都经历了那些过程?本文以Linux下C语言的编译过程为例,讲解C语言程序的编译过程. 编写hello world C程序: // hello.c #include ...
- Android编译过程详解(一)
Android编译过程详解(一) 注:本文转载自Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359 ...
- cegui-0.8.2编译过程详解
cegui 编译过程详解(cegui-0.8.2) cegui配置整了好长时间了,在一位大牛帮助下终于搞定了,网上的教程大多是老版本的,cegui-0.8.2版的配置寥寥无几,现在总结一下,献给正在纠 ...
- uboot主Makefile分析(t配置和编译过程详解)
1.编译uboot前需要三次make make distcleanmake x210_sd_configmake -j4 make distclean为清楚dist文件. make x210_sd_c ...
- uboot配置和编译过程详解【转】
本文转载自:http://blog.csdn.net/czg13548930186/article/details/53434566 uboot主Makefile分析1 1.uboot version ...
- GCC 使用-C语言编译过程
任何一种高级语言,要想在机器上执行,必须翻译为机器能读懂的机器语言.编译器就相当于翻译官,将高级语言翻译为机器语言. GCC 最初只用了编译 C 语言程序,全称是 GNU C Compiler.后来扩 ...
- uboot配置和编译过程详解
根据朱有鹏老师讲解整理 一.uboot主Makefile分析 1.uboot version确定(Makefile的24-29行) include/version_autogenerated.h文件是 ...
- gcc 编译过程详解-(转自CarpenterLee)
前言 C语言程序从源代码到二进制行程序都经历了那些过程?本文以Linux下C语言的编译过程为例,讲解C语言程序的编译过程. 编写hello world C程序: // hello.c #include ...
- Hive SQL的底层编译过程详解
本文结构采用宏观着眼,微观入手,从整体到细节的方式剖析 Hive SQL 底层原理.第一节先介绍 Hive 底层的整体执行流程,然后第二节介绍执行流程中的 SQL 编译成 MapReduce 的过程, ...
随机推荐
- 前置机器学习(四):一文掌握Pandas用法
Pandas提供快速,灵活和富于表现力的数据结构,是强大的数据分析Python库. 本文收录于机器学习前置教程系列. 一.Series和DataFrame Pandas建立在NumPy之上,更多Num ...
- 七牛云上传视频(后端获取tolen)
参照网址 https://developer.qiniu.com/kodo/sdk/1242/python #pip install qiniufrom qiniu import Auth #需要填写 ...
- <UnityTheGreat><001>获取指定目录下指定类型的所有文件的名称
#region Environment Windows 10 Unity 2019.4.16f1c1 LTS VSCode 1.52 https://github.com/MirzkisD1Ex0/U ...
- Nginx(四):Keepalived+Nginx 高可用集群
Keepalived+Nginx 高可用集群 (主从模式) 集群架构图 安装keepalived [root@localhost ~]# yum install -y keepalived 查看状态 ...
- vue API 知识点(3) --- 实例 总结
一.实例 property 1.vm.$data Vue 实例观察的数据对象,Vue 实例代理了对其 data 对象 property 的的访问 2.vm.$props 当前组件接收到的 props ...
- 附029.Kubernetes安全之网络策略
目录 环境构建 基础环境构建 网络测试 安全策略 策略配置 策略测试 ingress方向测试 egress方向测试 to和from行为 默认策略 环境构建 基础环境构建 [root@master01 ...
- python的常量与变量
1.Python属于强类型编程语言,Python解释器会根据赋值或运算来自动判断变量的类型.Python还是一种动态类型语言,变量的类型也是可以随时变化的. >>> x=3 > ...
- [leetcode]207. Course Schedule课程表
在一个有向图中,每次找到一个没有前驱节点的节点(也就是入度为0的节点),然后把它指向其他节点的边都去掉,重复这个过程(BFS),直到所有节点已被找到,或者没有符合条件的节点(如果图中有环存在). /* ...
- MVC和WebApi路由机制比较
1.MVC使用的路由 在MVC中,默认路由机制是通过解析url路径来匹配Action.比如:/User/GetList,这个url就表示匹配User控制器下的GetList方法,这是MVC路由的默认解 ...
- Java学习日报10.1
学习内容一 ********************************** 代码 **********************************public class EnumTest ...