一.复习GCC编译器的用法
1.复习GCC编译器的用法
欲善其工,那么要先利其器。在这个C语言巩固与提高的阶段中,如果想要更好的达成预期目标,首先就要熟练掌握GCC编译器的用法。以下是GCC相关知识:
GCC使用语法
gcc 选项 参数
选项
-o : 指定生成的输出文件
-E : 只进行编译预处理
-S : 讲C代码转化为汇编代码
-c : 只进行编译操作,不进行链接操作
-wall : 显示警告信息
-O : 编译优化
参数
C源文件:就是需要编译的C语言代码文件
实例
有一源文件名为test.c
1无编译选项
gcc test.c
将test.c预处理,汇编,编译并链接形成可执行文件。这里没有指定输出文件,默认输出为a.out
2.有选项-o
gcc test.c -o test
将test.c预处理,汇编,编译,链接后形成名为test的可执行文件。-o选项用来指定输出的文件名。
3.选项E
gcc -E test.c -o test.i
将test.c预处理后输出test.i文件
4.选项-S
gcc -S test.i
将预处理输出文件test.i汇编为test.s文件
5.选项-c
将汇编输出文件test.s编译输出test.0文件
无选项链接
gcc test.o -o test
将编译输出文件test.o链接为最终的可执行文件test
从上述例子可以看出,c->d->e->无选项链接这几步操作实现了将C语言源文件编译为最终可执行文件的目的。也就是说,一个C语言源文件需要经过预处理,汇编,编译,链接这四个步骤才能成为最终的可执行文件
上述几个是基本操作,不过若想成为一个合格的C语言码农,你还得知道以下几点:
6.选项-O
gcc -O1 test.c -o test
将test.c使用编译级别为1的方式编译为test可执行文件,gcc中级别为1-3,级别越大,程序的优化效果就越好,但相应的编译时间越长。(注:编译选项为大O,而编译选项为小o)
7.多文件编译方法
若工程较大,存在多个.c文件。那么有以下两种编译方法:
假设有两个源文件为test1.c和test2.c
1.多个文件一起打包编译
gcc test1.c test2.c -o test
将两个文件分别编译后,链接为可执行文件test
2.单独编译各个文件,之后将输出的.o文件链接起来
gcc -c test1.c #将test1编译为test1.o
gcc -c test2.c #同上
gcc -o test1.o test2.o -o test #将两个.o文件链接为test可执行文件
注:第一种方式是将所有文件重新编译然后链接,而第二种方式可以有所选择,可以针对性的编译有修改的文件,无修改的不用编译。
一.复习GCC编译器的用法的更多相关文章
- Linux中gcc编译器的用法
在Linux环境下进行开发,gcc是非常重要的编译工具,所以学习gcc的基本常见用法时非常有必要的. 一.首先我们先说明下gcc编译源文件的后缀名类型 .c为后缀的文件,C语言源代码文件: .a为后 ...
- gcc编译器用法
一个用c语言写的程序把他编译成计算机可执行的文件,一般有4个步骤 /*================================================================ ...
- C语言的本质(33)——GCC编译器入门
GCC(GNU CompilerCollection,GNU编译器套装),是由 GNU 开发的编程语言编译器.它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分.GCC原本作为GNU操作系 ...
- gcc编译器对宽字符的识别
最早是使用VC++工具来学习C++,学的越多就越对VC挡住的我看不见的东西好奇,总想多接触一些开发环境,今日抽空摸索了一下CodeBlocks这个开源的IDE使用方法,配置的编译器是MinGW的gcc ...
- gcc编译器命令使用详解
1.gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c++程序就用g++编译 ...
- GCC编译器基础入门
导语 GCC(GNU Compiler Collection,GNU 编译器套件) 是由 GNU 开发的编程语言编译器,支持C.C++.Objective-C.Fortran.Java.Ada和Go语 ...
- gcc编译器参数
[gcc编译步骤] 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] 3.由汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4 ...
- gcc编译器常用选项的含义
-w: 关闭编译时的警告, 也就是编译后不显示任何warning,因此有时编译中会出现一些诸如数据转换之类的可忽略警告, -Wall: 显示编译后所有警告 -W: 显示警告,但是只是显示编译器认为的会 ...
- 在CentOS 7.2下升级gcc编译器的版本
默认情况下,CentOS 7.2预装的gcc版本是4.8.x,通过执行命令 gcc -v 可以看到,一般情况下这个版本的编译器已经满足需要了,但是某些特殊的时候为了支持C++更高的特性,需要对gcc编 ...
随机推荐
- golang中context包学习
摘要 go语言中goroutine之间的关联关系,缺乏维护,在erlang中有专门的机制来保障新开仟程的生命周期, 在go语言中,只能通过channel + select来实现,但不够直观,感觉很绕. ...
- 六 Android Studio打包Eegret App (解决开机黑屏问题)
因为android studio中的SplashActivity并没有什么卵用,只是开机1s显示开机画面,1s后面还是黑屏. 在主文件中加入以下代码,就是开始游戏时显示一个居中填满屏幕的图片,游戏加载 ...
- 【BZOJ1706】[usaco2007 Nov]relays 奶牛接力跑 矩阵乘法
[BZOJ1706][usaco2007 Nov]relays 奶牛接力跑 Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项 ...
- 170502、linux下配置jdk8
1.下载源码包jdk-8u45-linux-x64.tar.gz(省略) 2.解压 tar -zxvf jdk-8u45-linux-x64.tar.gz 3.配置jdk vi /etc/profil ...
- Jquery 中 .trigger 的用法
项目中有个需求,数据加载完成后,默认模拟点击某个元素节点(选中某个元素节点)并触发事件 $('.course_list dd').on('click', function () { //取当前 ...
- Boss Group Worker Group NioEventLoopGroup
宜人贷蜂巢API网关技术解密之Netty使用实践 - honeycomb2017的博客 - CSDN博客 https://blog.csdn.net/honeycomb2017/article/det ...
- SQL Server 常用分页SQL(转)
发现网上好多都是错的.网上经常查到的那个Top Not in 或者Max 大部分都不实用,很多都忽略了Order和性能问题.为此上网查了查,顺带把2000和2012版本的也补上了. 先说说网上常见SQ ...
- 如何获取Input标签自定义属性的值?
HTML代码: <input type="hidden" value="${Name?if_exists}" id='ID' busCode = &quo ...
- linux中的周期调度器
2017-06-27 上篇文章简要介绍了Linux进程调度,以及结合源代码窥探了下CFS的调度实例.但是没有深入内部区分析调度下面的操作,比如就绪队列的维护以及进程时间的更新等.本节就这些问题做深入讨 ...
- Flask之基本使用与配置
简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理 ...