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 的过程, ...
随机推荐
- CC-BY-NC-SA (创作共用许可协议)
创作共用许可协议 (英语:Creative Commons license,简称CC许可) 是一种公共版权许可协议,其允许分发受版权保护的作品. 一个创作共用许可,用于一个作者想给他人分享.使用.甚至 ...
- ATS push cache 测试
测试 ATS 注入缓存 参考了: http://serverfault.com/questions/471684/push-content-to-apache-traffic-servers-cach ...
- 移动端 FileReader文件上传
一.file上传文件 <input type="file" multiple> multiple 设置多选 通过change事件监听是否上传文件 files 属性获 ...
- 多年总结IDEA 使用技巧 (建议收藏!)
很长一段时间没有更新了,前段时间转测试了,浪费了一些时间,终于可以写文章了,今天来写一下之前自己开发的一些习惯,因为自己本身自己是一个极简主义所以 开发喜欢这样:. 全屏显示 我们可以使用[Prese ...
- 这个 bug 让我更加理解 Spring 单例了
我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...
- 为什么放弃Hibernate、JPA、Mybatis,最终选择JDBCTemplate
一.前言 因为项目需要选择数据持久化框架,看了一下主要几个流行的和不流行的框架,对于复杂业务系统,最终的结论是,JOOQ是总体上最好的,可惜不是完全免费,最终选择JDBC Template. Hibe ...
- apk获取sha1值的方法
安卓应用都使用一个签名证书(.keystore或.jks文件)签名,签名证书可以由jdk生成.证书生成后,证书就有其sha1值. 使用此证书打包后的安卓应用,也有其一样的sha1值.md5值和sha2 ...
- 学习一下 SpringCloud (二)-- 服务注册中心 Eureka、Zookeeper、Consul、Nacos
(1) 相关博文地址: 学习一下 SpringCloud (一)-- 从单体架构到微服务架构.代码拆分(maven 聚合): https://www.cnblogs.com/l-y-h/p/14105 ...
- CountDownLatch深度剖析
场景引入 日常开发中,有个需求,要求主线程开启多个线程去并行执行任务,并且主线程需要等待所有的子线程执行完成后进行汇总.我们很容易找到 jion()方法来实现这个功能 缺点:由于工作中,我们不会直接创 ...
- IaaS、PaaS、SaaS、DaaS都是什么?现在怎么样了?终于有人讲明白了
导读:本文将详细科普云计算的概念.云服务的发展现状,并逐一介绍各种云服务模式(IaaS.PaaS.SaaS.DaaS),建议收藏! 作者:阿里云智能-全球技术服务部来源:大数据DT(ID:bigdat ...