| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> C语言基础知识——编译 -> 正文阅读 |
|
[系统运维]C语言基础知识——编译 |
? ? ? ? 写完了神级入门程序,在运行程序前,稍稍了解了一下编程机制。(暂时还不知道具体用处,就是觉得高大上) ? ? ? ? 我练习编程使用的是VS2019,还用虚拟机装了一个CentOS操作系统,用于了解Linux环境。 ? ? ? ? 了解编译步骤是在虚拟机中进行的,感觉手打命令简单一点。(VS各种功能太多了,目前只用了【调试】【运行】两个按钮。) ? ? ? ? 咱们编写的程序代码都被保存在一种文本文件中,被称为源代码文件,简称源文件。 ? ? ? ? C程序源文件的文件名以?.c?作为后缀,比如:hello.c ? ? ? ? 单独的源代码文件只有咱们编写的程序代码,是无法被执行的,需要通过编译器的处理才能编程可执行文件。 ? ? ? ? 编译器:是将高级语言编写的程序翻译成计算机能了解的机器语言指令集的程序。 ? ? ? ? 注意:编译器是一个程序!!! ? ? ? ? 具体编译过程为可分为四步: ? ? ? ? 1、预处理? ? ? ? 命令为:gcc -E 源文件名.c?-o 预处理文件名.i ? ? ? ? 注意:得到的预处理文件必须以 .i 结尾 ? ? ? ? 例子:
? ? ? ? 预处理在前一篇文章中提了一嘴,在编译器编译程序之前进行,对程序 进行一些准备工作。 ? ? ? ? 这些准备工作包括: ? ? ? ? 1)引入头文件 ? ? ? ? 2)替换宏定义 ? ? ? ? 3)执行条件代码 ? ? ? ? 4)删除注释 ? ? ? ? 这个阶段不会检查语法错误。 ? ? ? ? 2、编译? ? ? ? 命令为:gcc -S 预处理文件名.i -o 汇编文件名.s ? ? ? ? 例子:
? ? ? ? 预处理文件中的代码翻译成汇编指令 ? ? ? ? 这个阶段会逐行检查语法错误 ? ? ? ? 这个步骤之后,懂汇编语言的还是可以看懂文件内容的 ? ? ? ? 3、汇编? ? ? ? 命令为:gcc -c 汇编文件名.s -o 二进制文件名.o ? ? ? ? 例子
? ? ? ? 这个阶段会将汇编文件翻译成二进制文件,文件内容通篇都是二进制序列。 ? ? ? ? 到这步为止,我们可以将得到的文件成为目标代码文件 ? ? ? ? 4、链接? ? ? ? 命令为:gcc hello.o -o hello ? ? ? ? 例子
? ? ? ? ?这一阶段是由一个叫链接器程序执行的。在通常情况下,编译器运行链接器。 ? ? ? ? 连接器会将目标代码文件、操作系统的启动代码(不同的操作系统,拥有不同的启动代码),以及库代码(包含了你在程序用使用的库函数的具体代码)三者结合在一起,形成可执行文件。 ? ? ? ? 上面四条命名都用到了一个参数 -o,这个参数的作用是定制目标文件的名称。 ? ? ? ? 其中,前三条命令的目标文件名hello.i、hello.s、hello.o的名字可以随便写,但后缀是不可以随便写的。 ? ? ? ? 在Linux系统中,第四条命令生成的可执行文件的名称定义比较自由,因为Linux系统好像对于可执行文件名没有后缀要求??? ????????但在Windows系统下,执行第四条命令后,会自动生成后缀为.exe可执行文件 ? ? ? ? 编译4步骤也不是必须逐条执行的,也可以省略中间的一些步骤
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 18:21:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |