开发者社区> hudan2714> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C语言编译流程

简介:
+关注继续查看

 

 

无论是高级程序设计语言还是专用程序设计语言,都不能被计算机系统直接识别,用这些语言所编写的程序代码称为源程序,源程序需要通过预先设计好的专用程序进行转换,转换为计算机系统可以识别的机器指令,然后才能交由计算机系统执行。

编辑是程序员通过编辑软件录入源代码的过程。
编译是文件录入后,使用编译程序对源文件进行编译,目标文件已经是二进制的机器代码了。
一方面有些程序使用频率高,一般程序员难以自行开发,因此编译系统通常将这些功能预先编译好,以程序库的形式提供给程序员使用。
另一方面,待开发的程序可能不只一个源文件组成,而是由多个源文件构成的,经过编译后,每个源文件生成一个不完整的目标文件,将这些目标文件拼在一起,才能构成整个目标文件。
链接过程就是对组成整个程序的各个目标文件,程序库进行封装,生成最终的目标程序的过程。

 

C语言编译流程:

预处理-->编译-->汇编-->链接 -->a.out

预处理是把宏定义的指令信息拷贝到源程序中,进行头文件替换,不检查语法错误。

可以通过gcc编译命令【gcc -E  源文件(.c) -o 生成文件(.i)】 生成.i文件查看。

编译通过gcc编译命令[gcc -S 预处理文件(.i文件)]命令编译,这时会检查语法错误。生成.s文件。

汇编把文本文件编译成机器的二进制文件。通过gcc命令【gcc -c .s文件】,生成.o的文件。

链接是把多个.o的文件,链接成一个可执行的动态文件。输出.out文件。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
彻底搞定C语言指针(精华版)
1.语言中变量的实质要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧!先来理解理解内存空间吧!请看下图:内存地址→  6      7   8      9   10      11      12       13-----------------------------------------------------------------。
1014 0
C语言 将字符串按照指定字符分离并且反转(三级指针)列子
C语言 将字符串分离并且反转(三级指针) 本程序完成功能 1、将输入的字符串按照指定字符分离为子字符串 2、将子字符串进行反转 使用方法 在栈空间分配一个三级指针,指向堆内存空间的指针数组的位置,每个指针数组成员又指向一个字符串,必须明确如下的 内存四区图这里只画最为复杂的分离字符函数,而不画反转函数,因为反转函数模型非常简单,而且画太多太麻烦。
902 0
C语言 第八章 函数、指针与宏
一、函数 函数是一个包含完成一定功能的执行代码段。我们可以把函数看成一个"黑盒子", 你只要将数据送进去就能得到结果, 而函数内部究竟是如何工作的的, 外部程序是不知道的。外部程序所知道的仅限于输入给函数什么以及函数输出什么。
1025 0
Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型
<div class="markdown_views"> <h1 id="android-for-jni五c语言多级指针结构体联合体枚举自定义类型">Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型</h1> <hr> <blockquote> <p>我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了</p>
1321 0
+关注
102
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载