C语言源程序怎么到可执行程序
源程序(源代码)是指按照一定的程序设计语言规范编写的未经过编译的文本文件,是具有可读性的计算机语言指令。可以比作自己手写的程序代码。
可执行程序(Executable Program,EXE file)是可以在操作系统存储空间中浮动定位的二进制可执行程序。一般软件安装后会生成可执行文件,可以直接加载到内存中,并又操作系统加载并执行。
以 C 语言为例,自己编写的源代码文件扩展名为 c,这个 c 文件就是源文件。从源文件到可执行文件一般需要经过几个步骤:预处理->编译->汇编->链接这四个过程。
- 预处理:预处理相当于根据预处理命令将源代码转换为新的 c 程序,不过通常以 i 为扩展名。
- 编译:将得到的 i 文件翻译成汇编代码,通常以 s 为扩展名。
- 汇编:将汇编文件翻译为机器指令,并打包成可重定位目标程序的 o 文件。
- 链接:将引用的其它 o 文件加到汇编后的 o 文件中,处理后得到最终的可执行文件。
这里首先在 linux 操作系统中编写源代码,并命名为 hello.c,内容如下:
#include <stdio.h>int main()
{printf("Hello world!\n");return 0;
}
一个很简单的源代码,但是这样的源代码如果不是在集成开发环境(Integrated Development Environment,IDE)中是不能够直接点击执行的,需要经过一系列的操作,具体为:
# 预处理
gcc -E hello.c -o hello.i
# 编译
gcc -S hello.i -o hello.s
# 汇编
gcc -c hello.s -o hello.o
# 链接
gcc hello.o -o hello
经过以下操作后,就能够发现在 hello.c 文件同级目录中出现了文件 hello.i,hello.s,hello.o,hello。可知文件 hello 即为可执行程序,我们在终端中输入下方的指令,就能够看到最后的输出结果。
./hello
C语言源程序怎么到可执行程序相关推荐
- c语言源程序自动评判系统,源程序的自动评判系统.PDF
源程序的自动评判系统 · 6 · ComputerEraNo.4 2010 C五口吉I====I源程序的自动评判系统 余梓唐 (义乌工商学院计算机系,浙江 义乌 322000) 摘 要:自动评判系统为 ...
- c语言源程序自动评判系统,C语言源程序的自动评判系统.pdf
C语言源程序的自动评判系统.pdf · 6 · ComputerEraNo.4 2010 C五口吉I====I源程序的自动评判系统 余梓唐 (义乌工商学院计算机系,浙江 义乌 322000) 摘 要: ...
- C语言源程序作业完成系统,C语言源程序的自动评判系统
C语言源程序的自动评判系统 · 6 · Co mpu e a N o 4 01 tr Er . 2 0 C五吉程序的自动评判系统 =源口I== I 余梓唐 (义乌工商学院计算机系,浙江义乌 32 0) ...
- 谈谈c语言程序如何变成可执行文件,C语言从代码变成可执行程序的步骤
C语言从代码变成可执行程序的步骤: 预处理 -----> 编译 -----> 汇编 -----> 链接 ⒈预处理:去掉注释,加载头文件,代替宏定义,条件编译 需要文件:.c文件 生成 ...
- 6.标准C语言程序的文件名的后缀是,c语言源程序文件名的后缀是什么
c语言源程序文件名的后缀是".c".c语言源程序经过C编译程序编译生成后缀为".obj"的二进制文件(目标文件),然后由称为"连接程序"(L ...
- 标准C 语言程序的源文件名的默认后缀,c语言源程序文件名的后缀是什么
c语言源程序文件名的后缀是".c".c语言源程序经过C编译程序编译生成后缀为".obj"的二进制文件(目标文件),然后由称为"连接程序"(L ...
- 编写一个程序,实现将c语言源程序中的注释全部删除
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 6.编写一个程序,实现将c语言源程序中的注释全部删除 #include<stdl ...
- 图形旋转的C语言源程序
图形旋转的C语言源程序 /*****************************************************************/ /* CONVOLVE.C - Turb ...
- 串口调试助手c语言程序,串口调试助手C语言源程序
串口调试助手C语言源程序 串口调试助手源程序 及编程详细过程 作者:龚建伟 2001.6.20 可以任意转载,但必须注明作者和说明来自http://doc.xuehai.net,不得作为商用 目次: ...
最新文章
- 单网段DHCP服务器的架设
- 商店购物java程序_java操纵数据库-商店购物管理系统
- 无源码动态调试APK
- ffmpeg编译gb28181_国标GB28181协议视频推流平台EasyGBD在Linux下编译报“UINT64_C在此作用领域中尚未声明”错误...
- 位换记号、排列测试与状态图:杂耍中的数学
- 心路分享 | 2022暑期算法实习复盘
- [翻译]现代java开发指南 第一部分
- java树广度优先_如何在功能上生成树广度优先 . (使用Haskell)
- c语言中除法运算和模运算,C语言除法算法和取模运算的实现(多种算法,多种思路)...
- 微信公众号开发框架 For Java —— wechatapi
- 服务器 虚拟软驱,virtual floppy(虚拟软驱)命令行版本
- ANSYS 有限元分析 加载/求解/输出
- Invalid bound statement (not found): 各种原因
- Qt 5.12--color
- jQuery插件的使用
- LDPC译码原理(公式推导)及其matlab代码实现(超详细)
- 植物大战僵尸超全资源合集
- Java中判断两个日期是否在同一个月
- 【NLP】关键词共现/属性共现矩阵
- matlab 一元方程程序,用牛顿方法解一元非线性方程的根(Matlab实现)