ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C语言入门学习(第二十三天——C程序的生成)

2021-03-07 23:33:59  阅读:237  来源: 互联网

标签:文件 gcc 入门 第二十三 生成 Link C语言 预处理 属性


镇楼图

Pixiv:よはく

============

一、C语言生成程序的过程:

预处理、编译、汇编、链接

C语言程序的生成需要经过预处理、编译、汇编、链接这些操作才能生成一个可执行程序

①预处理(Pre-Processing)

对C语言文件就行预处理,生成 .i 文件

②编译(Compiling)

将 .i 文件进行编译,生成 .s 汇编语言文件

③汇编(Assembling)

将 .s 文件进行汇编,生成 .o 目标文件

④链接(Linking)

将各种模块和 .o 文件进行链接,最终生成可执行文件

这一操作可以使用gcc文件来尝试实现

这里我以Win10平台为例:

【如何使用MinGw管理器参考这个blog:MinGw安装和使用

Ctrl+R输入cmd打开shell窗口切到已经准备好C文件的地方

分别进行以下指令

gcc -E c文件 -o i文件
//Pre-process
gcc -S i文件 -o s文件
//Compile
gcc -c s文件 -o o文件
//Assembly
gcc o文件 -o 文件
//Link

可以得到i文件、s文件、o文件、可执行文件

然后可以用笔记本打开i文件、s文件

这分别对应了预处理后的文件、C代码转换成汇编代码的文件

再之后就是0101的机器代码的文件

============

二、链接属性

Link主要链接各个文件的函数等最后生成一个可执行文件。

Link属性作用于标识符,且有三种

①none

局部标识符所具有的Link属性

(即使是Link)

只能作用于当前的局部作用域、原型作用域或者函数作用域

②external

全局标识符在默认情况下具有external属性

可以作用于多个文件

③internal

需要手动使用static关键字把external属性变成internal属性

只能作用于当前文件

static int a = 2;
//使用static是不可逆的过程,一旦修改为internal属性就无法再修改为external

参考资料

https://fishc.com.cn

http://www.cplusplus.com/reference

https://www.icourse163.org/course/ZJU-200001

标签:文件,gcc,入门,第二十三,生成,Link,C语言,预处理,属性
来源: https://www.cnblogs.com/AlienfronNova/p/14497353.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有