温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

GCC编译命令有哪些

发布时间:2021-11-11 18:06:14 来源:亿速云 阅读:145 作者:柒染 栏目:互联网科技

这篇文章给大家介绍GCC编译命令有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

大家没有IDE时候,可能一开始有点不习惯,但是坚持用一段时间,你就会爱上文本编辑器+编译器的模式了,不管是编译速度还是编译时的界面而言,这都方式都比IDE炫酷,毕竟再怎么样也是免费的,是吧。
这里再来讲一下终端,可能绝大多数同学以前只使用过Windows底下的“CMD”,即“命令提示符”,我还听过有人把它叫做DOS界面等等。而在Linux里面有一个长得差不多的东西,叫做终端,或者控制台等等。如图1所示。
                           
GCC编译命令有哪些
图1 Windows下的“命令提示符”和Linux下的“终端”

看图1上的两张图片都是黑不溜秋的界面,两个东西难道不一样吗?其实啊,这两个是完全从设计哲学角度就不一样的东西。我们先来说终端,这个终端是Linux从Unix时代继承过来的产物,可能现在提到计算机,大家第一反应就是应该像笔记本或者台式机一样的东西,很小巧,每人一台在办公室办公。其实早期的计算机生成成本太贵,体积太大,都是以小型机或者大型机形式存在的,可能每个公司也就一台,其他用户都是使用串口插到这台大型机上面来工作的,他们面前只有一个叫做“终端”(或者控制台的设备,上面跑的程序叫做Shell)档或者其他办公,因此Unix最早期的设计哲学就是中心化数据处理的多用户多任务操作系统,而Linux完美继承了这一点。这种方式是不是有点类似于现在的服务器架构?这就是为什么,其他领域Windows都比Linux占优势,就是服务器领域这块蛋糕一直在Linux嘴里。后来由于Linux操作系统引入了GUI,而这些GUI都只是Linux系统里面的一个进程,真正的Linux还是那个终端。如图2所示。

GCC编译命令有哪些
图2 历史上的“终端

而Windows不一样,Windows诞生之初,个人电脑的业务就已经开始蓬勃发展,而他们最早为IBM PC开发的DOS系统叫做MS-DOS,当时有很多版本的DOS,微软的DOS只是其中一个,顺便说一下,DOS都是单用户,单任务操作系统,仅仅是为了用户操作磁盘里面的数据和软件而设计的。后来微软真正独领操作系统风骚的,是其推出了Windows,其实Windows界面和最早只是DOS里面的一个程序而已,用过Windows95的就知道,开完机电脑呈现给你的是一个命令行,要输入一长串命令才可以进入操作系统,这种机制直到Windows XP才被取消,Windows成为真正的Windows。理所当然,由于某些用户的习惯“DOS界面”下来了。
DOS和Shell的区别大致如下。
1,shell区分大小写,DOS不区分大小写;
2,一般而言,shell的命令的开关可以简写(比如说“-a -l“可以简写为“-al“),而DOS的则不允许;
3,在脚本编写上的语法差别极大,比如说:两者的流程控制语句语法不同,变量的语法不同等;
4,shell可以在UNIX、GNU/Linux和Win下(cygwin bash shell)工作,DOS则还没有听说过能在Win/DOS以外的系统中工作;
5,shell原生支持正则表达式,DOS则不是。
后来Windows 7之后,微软也在个人操作系统上面加入了一个叫做“Power shell”的软件,而我们之前VS Code里面自带的终端软件就是Powershell。以上就是Shell和命令提示符的介绍。
Shell命令在操作时,输入命令的格式为:命令参数1 参数2 … 参数n。来看之前常用的编译命令“gcc -o hello helloeorld.c”如图3所示。注意,在shell里运行GCC一定要区分所有大小写。

GCC编译命令有哪些
GCC编译命令有哪些
图3 GCC常用选项

GCC的参数功能还有很多,我们再一起来看几个。如图4所示,这个表只是罗列了几个常用的参数,如果有其他新参数需要使用,我们到时候再说。注意一下图3里面的参数1就是我后文中所说的“选项”,这两个是一回事情。
还是以之前的helloworld.c为例子,我们之前说到,一个程序的编译分成“预处理”->“编译”->“汇编”->“链接”这四个步骤,接下来我们用gcc一步步来看一下他们所产生的中间文件。
(1)只激活预处理,不进行后续三步,此时使用的命令应该为“gcc -E ./helloworld.c > propress.c”,这个功能需要将预处理完成之后的文件存储到一个新的文件里面,我们这里使用了“propress.c”这个名字。如图4所示。

GCC编译命令有哪些
图4 gcc预处理命令

(2)只做编译,不进行后续步骤。此时使用的命令应该为“gcc -S .\helloworld.c”,运行完成后,编译器会在当前文件夹里面输出一个名叫helloworld.s的文件,它就是GCC生成的汇编语言。如图5所示。

GCC编译命令有哪些
图5 gcc生成汇编语言文件
 
(3)只生成目标文件,不进行后续的链接步骤。此时使用的命令应该为“gcc -c .\helloworld.c”,运行完成后,编译器会在当前文件夹里面输出一个名叫helloworld.o的文件,它就是GCC生成的目标文件。如图6所示。VS Code一开始可能无法打开二进制文件,大家需要去应用市场自行下载一个叫“binary”的插件

GCC编译命令有哪些
图6 目标文件

(4)最后一步就是利用gcc生成最后的可执行文件,使用命令“gcc -o helloworld helloworld.c”最终会生成可执行文件helloworld.exe,注意此时的.exe后缀名是自动加上的,可以隐藏。
此外,如果大家对终端操作起来还是觉得不习惯,有一个叫做Dev Cpp的软件也是个集成MinGW的IDE,大家可以自己去尝试。

关于GCC编译命令有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

gcc
AI