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编译器的用法的更多相关文章

  1. Linux中gcc编译器的用法

    在Linux环境下进行开发,gcc是非常重要的编译工具,所以学习gcc的基本常见用法时非常有必要的. 一.首先我们先说明下gcc编译源文件的后缀名类型 .c为后缀的文件,C语言源代码文件:  .a为后 ...

  2. gcc编译器用法

    一个用c语言写的程序把他编译成计算机可执行的文件,一般有4个步骤 /*================================================================ ...

  3. C语言的本质(33)——GCC编译器入门

    GCC(GNU CompilerCollection,GNU编译器套装),是由 GNU 开发的编程语言编译器.它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分.GCC原本作为GNU操作系 ...

  4. gcc编译器对宽字符的识别

    最早是使用VC++工具来学习C++,学的越多就越对VC挡住的我看不见的东西好奇,总想多接触一些开发环境,今日抽空摸索了一下CodeBlocks这个开源的IDE使用方法,配置的编译器是MinGW的gcc ...

  5. gcc编译器命令使用详解

    1.gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c++程序就用g++编译 ...

  6. GCC编译器基础入门

    导语 GCC(GNU Compiler Collection,GNU 编译器套件) 是由 GNU 开发的编程语言编译器,支持C.C++.Objective-C.Fortran.Java.Ada和Go语 ...

  7. gcc编译器参数

    [gcc编译步骤] 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] 3.由汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4 ...

  8. gcc编译器常用选项的含义

    -w: 关闭编译时的警告, 也就是编译后不显示任何warning,因此有时编译中会出现一些诸如数据转换之类的可忽略警告, -Wall: 显示编译后所有警告 -W: 显示警告,但是只是显示编译器认为的会 ...

  9. 在CentOS 7.2下升级gcc编译器的版本

    默认情况下,CentOS 7.2预装的gcc版本是4.8.x,通过执行命令 gcc -v 可以看到,一般情况下这个版本的编译器已经满足需要了,但是某些特殊的时候为了支持C++更高的特性,需要对gcc编 ...

随机推荐

  1. [Android] 开源框架 Volley 自定义 Request

    今天在看Volley demo (https://github.com/smanikandan14/Volley-demo), 发现自定义GsonRequest那块代码不全, 在这里贴一个全的. pu ...

  2. nexus的pom配置

    <groupId>com .sms</groupId><artifactId>sms </artifactId><packaging>pom ...

  3. PHP 开发环境的搭建和使用03-- 安装mySql

    1/  安装的MySQL版本是5.6.10版本的,直接点击Install 2/ 选择 Execute 3/  更新最新版本成功后,选择 "next" 4/  自定义安装方式,选择C ...

  4. 解析oracle的rownum,数据库查询结果返回行数设置

    对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀 ...

  5. gdb常见命令(未完,待续)

    // 编译文件时,带参-g > gcc -g test.c // 进入gdb调试界面 > gdb a.out 或者 > gdb > file a.out // 查看文件内容 & ...

  6. Spoken English Practice(And I can't walk. Should i just stay home and pout about it?)

    绿色:连读:                  红色:略读:               蓝色:浊化:               橙色:弱读     下划线_为浊化 口语蜕变(2017/7/12) ...

  7. Spring Data 增删改查事务的使用(七)

    @Modifying 注解使用 @Modifying 结合 @Query注解进行更新操作 咱们单单的一个查询注解是没有办法完成事务的操作的 我们还要结合一点就是@Transaction 在spring ...

  8. python基础-第七篇-7.4异常处理

    异常基础: 异常处理首先要捕获异常,不让程序中断,也不让错误信息直接呈现出来,然后就是你该怎么处理异常,以什么方式显示 try: pass except Exception,ex: pass 在需要用 ...

  9. LeetCode_Search in Rotated Sorted Array

    题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 ...

  10. 【react表格组件】react-virtualized虚拟列表

    https://css-tricks.com/rendering-lists-using-react-virtualized/