c++7f52bad3afa7a7c5a0678ccb6645>目录
第一:linuxgcc包含的c/c++编译器gcc、cc、c++、g++
第二:gcc特征
第三:gcc的运行过程
第四:gcc选项
第五:gcc所遵守的部份约定规则
第一:linuxgcc包含的c/c++编译器gcc、cc、c++、g++
其中gcc和cc是一样的,c++和g++是一样的,通常c语言程序就用gcc编译linux怎么用gcc编译linux怎么用gcc编译,c++程序就用g++编译。
第二:gcc特征
gcc是一个可移植的编译器,支持多种硬件平台。比如ARM、X86等等。
gcc除了是个本地编译器,它能够跨平台交叉编译。所谓的本地编译器,是指编译下来的程序只还能在本地环境进行运行。而gcc编译下来的程序才能在其他平台进行运行。
gcc有多种语言后端,用于解析不同的语言另外gcc是按模块化设计的linux vi命令,可以加入新语言和新CPU构架的支持。gcc是自由软件。任何人都可以使用或修改这个软件。
第三:gcc的运行过程
(1)在命令行输入:gcctest.c
这样会默认编译出一个名为a.out的程序,
再在命令行输入:./a.out
就可以运行程序。
(2)假如在命令行输入:gcctest.c-otest
这样将编译出一个名为test的程序
再在命令行输入:./test
就可以运行程序。
注:其中-o参数拿来指定生成程序的名子
(3)分步执行linux操作系统版本,更具体形象
其中包含4个过程:
1.预处理
本质会进行4个操作(包括头文件的展开、去掉注释、宏替换、条件编译)、
具体操作:命令行输入:gcc-Etest.c-otest.i
这句命令意思是:走完预处理第一步都会停出来,将形成的临时内容储存在test.i文件中
2.编译
本质就是把c语言弄成汇编语言
具体操作:命令行输入:gcc-Stest.i-otest.s
这句命令意思是:走完编译第二步都会停出来,将形成的临时内容储存在test.s文件中
3.汇编
本质就是把汇编语言弄成目标二补码文件(不可执行)
具体操作:命令行输入:gcc-ctest.s-otest.o
这句命令意思是:走完汇编第三步都会停出来,将形成的临时内容储存在test.o文件中
4.链接
本质就是引入我们在代码中使用的第三方库生成可执行文件或库文件
(第三方库由编译器和文件后缀共同决定)
第四:gcc选项
-E只进行预处理操作
-S编译到汇编停止(不进行汇编,只完成预处理和编译)
-c进行汇编操作(编译到汇编代码)
-O[0,1,2,3]
优化程序(默认为2级优化,0不优化,3优化级别最高)
-static对生成的文件采用静态链接
-shared尽量使用动态库
-Idir
将dir目录加入搜索头文件的目录路径
-Ldir
将dir目录加入搜索库的目录路径
-llib
联接lib库
-Wall使gcc对源文件的代码有问题的地方发出警告信息
-W不发出警告信息
-g在目标文件中生成调试信息,便于gdb之类的调试程序调试
以上就是基于命令行输入的c++/c++编译器运行过程的详细内容,更多请关注慧达安全导航其它相关文章!
免责 声明
1、本网站名称:慧达安全导航
2、本站永久网址:https//www.huida178.com/
3、本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
4、本站所有资源的属示图片和信息不代表本站的立场!本站只是储蓄平台及搬运
5、下载者禁止在服务器和虚拟机下进行搭建运营,本站所有资源不支持联网运行!只允许调试,参考和研究!!!!
6、未经原版权作者许可禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
7、为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
8.若资源侵犯了您的合法权益,请持 您的版权证书和相关原作品信息来信通知我们!QQ:1247526623我们会及时删除,给您带来的不便,我们深表歉意!
9、如下载链接失效、广告或者压缩包问题请联系站长处理
10、如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
11、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需
12、因源码具有可复制性,一经赞助,不得以任何形式退款。
13、本文内容由网友自发贡献和站长收集,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系1247526623@qq.com
转载请注明出处: 慧达安全导航 » 基于命令行输入的c/c++编译器运行过程
发表评论 取消回复