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. Angular2+学习第2篇 cli 环境搭建过程

    Angular-cli是angular团队针对Angular2提供的脚手架,用于环境搭建,运行等:具体参考Angular-cli GitHub Angular的启动过程,需要先回答三个问题: 启动时加 ...

  2. 160512、nginx+多个tomcat集群+session共享(windows版)

    第一步:下载nginx的windows版本,解压即可使用,点击nginx.exe启动nginx 或cmd命令 1.启动: D:\nginx+tomcat\nginx-1.9.3>start ng ...

  3. 新浪博客:html+css+原生JS+Ajax初级+mySql数据库——源码

    **************************************************************************************************** ...

  4. Zabbix自动发现与主动注册

    接上篇:Zabbix监控主动模式 网络自动发现 zabbix agent的配置文件/etc/zabbix/zabbix_agentd.conf 注释StartAgents=0 添加 HostnameI ...

  5. [VS2015].NET4.0环境下使用.NET2.0程序集,使用sqlite时报异常 出现“混合模式程序集异常”

    在.net 4.0环境下使用sqlite时报异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqli ...

  6. 实现一个自动生成小学四则运算题目的命令行程序(java实现)

    Github项目地址:https://github.com/xiaobaot/wordcount/tree/master/sizeyusuan 团队成员:谢家明(代码生成)    谢竣(测试完善) 项 ...

  7. Ta-lib K线模式识别

    1, CDL2CROWS (Two Crows 两只乌鸦) 简介:三日K线模式,第一天长阳,第二天高开收阴,第三天再次高开继续收阴,收盘比前一日收盘价低,预示股价下跌. 例子:integer = CD ...

  8. Genymotion 模拟器的sd卡的位置

    今天用genymotion测试一个例子,发现要用sdcard,虽然可以再DDMS的 File Explore 下看到 sdcard目录,也可以看到/mnt/sdcard 目录,但是往他那里传文件,建目 ...

  9. python基础-第五篇-5.4正则表达式

    正则基础知识 正则表达式是通过调用re模块实现的 在python里,正则表达式处理对象为字符串,所以正则里方法和字符串的方法有很多相似的地方:re.findall和find,re.split和spli ...

  10. 介绍importlib

    Python将importlib作为标准库提供.它旨在提供Pythonimport语法和(__import__()函数)的实现.另外,importlib提供了开发者可以创建自己的对象(即importe ...