C语言源程序到运行程序经过哪几个步骤 在计算机上运行一个C语言编写的程序,要经过怎样的处理过程

C\u8bed\u8a00\u6e90\u7a0b\u5e8f\u5230\u8fd0\u884c\u7a0b\u5e8f\u7ecf\u8fc7\u54ea\u51e0\u4e2a\u6b65\u9aa4

1\u3001\u9884\u5904\u7406
\u5728\u8fd9\u4e00\u9636\u6bb5\uff0c\u6e90\u7801\u4e2d\u7684\u6240\u6709\u9884\u5904\u7406\u8bed\u53e5\u5f97\u5230\u5904\u7406\uff0c\u4f8b\u5982\uff1a#include\u8bed\u53e5\u6240\u5305\u542b\u7684\u6587\u4ef6\u5185\u5bb9\u66ff\u6362\u6389\u8bed\u53e5\u672c\u8eab\uff0c\u6240\u6709\u5df2\u5b9a\u4e49\u7684\u5b8f\u88ab\u5c55\u5f00\u3002
\u6839\u636e#ifdef\uff0c#if\u7b49\u8bed\u53e5\u7684\u6761\u4ef6\u662f\u5426\u6210\u7acb\u53d6\u820d\u76f8\u5e94\u7684\u90e8\u5206\uff0c\u9884\u5904\u7406\u4e4b\u540e\u6e90\u7801\u4e2d\u4e0d\u518d\u5305\u542b\u4efb\u4f55\u9884\u5904\u7406\u8bed\u53e5\u3002
GCC\u9884\u5904\u7406\u9636\u6bb5\u53ef\u4ee5\u751f\u6210.i\u7684\u6587\u4ef6\uff0c\u901a\u8fc7\u9009\u9879-E\u53ef\u4ee5\u4f7f\u7f16\u8bd1\u5668\u5728\u9884\u5904\u7406\u7ed3\u675f\u65f6\u5c31\u505c\u6b62\u7f16\u8bd1\u3002\u4f8b\u5982\uff1agcc -E -o hello.i hello.c
2\u3001\u7f16\u8bd1
\u8fd9\u4e00\u9636\u6bb5\uff0c\u7f16\u8bd1\u5668\u5bf9\u6e90\u7801\u8fdb\u884c\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u4f18\u5316\u7b49\u64cd\u4f5c\uff0c\u6700\u540e\u751f\u6210\u6c47\u7f16\u4ee3\u7801\u3002\u8fd9\u662f\u6574\u4e2a\u8fc7\u7a0b\u4e2d\u6700\u91cd\u8981\u7684\u4e00\u6b65\uff0c\u56e0\u6b64\u4e5f\u5e38\u628a\u6574\u4e2a\u8fc7\u7a0b\u79f0\u4e3a\u7f16\u8bd1\u3002
\u53ef\u4ee5\u901a\u8fc7\u9009\u9879-S\u4f7fGCC\u5728\u8fdb\u884c\u5b8c\u7f16\u8bd1\u540e\u505c\u6b62\uff0c\u751f\u6210.s\u7684\u6c47\u7f16\u7a0b\u5e8f\u3002\u4f8b\u5982\uff1agcc -S -o hello.s hello.c
3\u3001\u6c47\u7f16
\u8fd9\u4e00\u9636\u6bb5\u4f7f\u7528\u6c47\u7f16\u5668\u5bf9\u6c47\u7f16\u4ee3\u7801\u8fdb\u884c\u5904\u7406\uff0c\u751f\u6210\u673a\u5668\u8bed\u8a00\u4ee3\u7801\uff0c\u4fdd\u5b58\u5728\u540e\u7f00\u4e3a.o\u7684\u76ee\u6807\u6587\u4ef6\u4e2d\u3002
\u5f53\u7a0b\u5e8f\u7531\u591a\u4e2a\u4ee3\u7801\u6587\u4ef6\u6784\u6210\u65f6\uff0c\u6bcf\u4e2a\u6587\u4ef6\u90fd\u8981\u5148\u5b8c\u6210\u6c47\u7f16\u5de5\u4f5c\uff0c\u751f\u6210.o\u76ee\u6807\u6587\u4ef6\u540e\uff0c\u624d\u80fd\u8fdb\u5165\u4e0b\u4e00\u6b65\u7684\u94fe\u63a5\u5de5\u4f5c\u3002
\u76ee\u6807\u6587\u4ef6\u5df2\u7ecf\u662f\u6700\u7ec8\u7a0b\u5e8f\u7684\u67d0\u4e00\u90e8\u5206\u4e86\uff0c\u53ea\u662f\u5728\u94fe\u63a5\u4e4b\u524d\u8fd8\u4e0d\u80fd\u6267\u884c\u3002\u53ef\u4ee5\u901a\u8fc7-c\u9009\u9879\u751f\u6210\u76ee\u6807\u6587\u4ef6\uff1agcc -c -o hello.o hello.c

4\u3001\u94fe\u63a5
\u7ecf\u8fc7\u6c47\u7f16\u4ee5\u540e\u7684\u673a\u5668\u4ee3\u7801\u8fd8\u4e0d\u80fd\u76f4\u63a5\u8fd0\u884c\u3002\u4e3a\u4e86\u4f7f\u64cd\u4f5c\u7cfb\u7edf\u80fd\u591f\u6b63\u786e\u52a0\u8f7d\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u6587\u4ef6\u4e2d\u5fc5\u987b\u5305\u542b\u56fa\u5b9a\u683c\u5f0f\u7684\u4fe1\u606f\u5934\uff0c\u8fd8\u5fc5\u987b\u4e0e\u7cfb\u7edf\u63d0\u4f9b\u7684\u542f\u52a8\u4ee3\u7801\u94fe\u63a5\u8d77\u6765\u624d\u80fd\u6b63\u5e38\u8fd0\u884c\uff0c\u8fd9\u4e9b\u5de5\u4f5c\u90fd\u662f\u7531\u94fe\u63a5\u5668\u6765\u5b8c\u6210\u7684\u3002gcc -o hello hello.c
5\u3001\u8fd0\u884c\uff1a\u6267\u884c.EXE\u6587\u4ef6\uff0c\u5f97\u5230\u8fd0\u884c\u7ed3\u679c\u3002

\u5f00\u53d1\u4e00\u4e2aC\u8bed\u8a00\u7a0b\u5e8f\u9700\u8981\u7ecf\u8fc7\u7684\u56db\u4e2a\u6b65\u9aa4\uff1a\u7f16\u8f91\u3001\u7f16\u8bd1\u3001\u8fde\u63a5\u3001\u8fd0\u884c\u3002

C\u8bed\u8a00\u7a0b\u5e8f\u53ef\u4ee5\u4f7f\u7528\u5728\u4efb\u610f\u67b6\u6784\u7684\u5904\u7406\u5668\u4e0a\uff0c\u53ea\u8981\u90a3\u79cd\u67b6\u6784\u7684\u5904\u7406\u5668\u5177\u6709\u5bf9\u5e94\u7684C\u8bed\u8a00\u7f16\u8bd1\u5668\u548c\u5e93\uff0c\u7136\u540e\u5c06C\u6e90\u4ee3\u7801\u7f16\u8bd1\u3001\u8fde\u63a5\u6210\u76ee\u6807\u4e8c\u8fdb\u5236\u6587\u4ef6\u4e4b\u540e\u5373\u53ef\u8fd0\u884c\u3002

1\u3001\u7f16\u8f91\uff1a\u8f93\u5165\u6e90\u7a0b\u5e8f\u5e76\u4fdd\u5b58\uff08\u3002C\u6587\u4ef6\uff09\u3002

2\u3001\u7f16\u8bd1\uff1a\u5c06\u6e90\u7a0b\u5e8f\u7ffb\u8bd1\u6210\u76ee\u6807\u6587\u4ef6\uff08\u3002OBJ\u6587\u4ef6\uff09\u3002

3\u3001\u8fde\u63a5\uff1a\u5c06\u76ee\u6807\u6587\u4ef6\u8f6c\u6362\u6210\u53ef\u6267\u884c\u6587\u4ef6\u3002EXE\u6587\u4ef6\uff09\u3002

4\u3001\u8fd0\u884c\uff1a\u6267\u884c\u3002EXE\u6587\u4ef6\uff0c\u5f97\u5230\u8fd0\u884c\u7ed3\u679c\u3002


\u6269\u5c55\u8d44\u6599\uff1a

C\u4ee3\u7801\u53d8\u6210\u7a0b\u5e8f\u7684\u9636\u6bb5\uff1a

1\u3001\u9996\u5148\uff0c\u6e90\u4ee3\u7801\u6587\u4ef6test\u3002c\u548c\u76f8\u5173\u7684\u5934\u6587\u4ef6\uff0c\u5982stdio\u3002h\uff0c\u7531\u9884\u5904\u7406\u7a0b\u5e8fCPP\u9884\u5904\u7406\u4e3a\u4e00\u4e2a\u3002\u6211\u7684\u6587\u4ef6\u3002\u8fd9\u662f\u9884\u7f16\u8bd1\u3002I\u6587\u4ef6\u4e0d\u5305\u542b\u4efb\u4f55\u5b8f\u5b9a\u4e49\uff0c\u56e0\u4e3a\u6240\u6709\u5b8f\u90fd\u5df2\u5c55\u5f00\uff0c\u6240\u5305\u542b\u7684\u6587\u4ef6\u90fd\u5df2\u63d2\u5165\u5176\u4e2d\u3002\u6211\u7684\u6587\u4ef6\u3002

2\u3001\u7f16\u8bd1\u8fc7\u7a0b\u5c31\u662f\u5bf9\u9884\u5904\u7406\u540e\u7684\u6587\u4ef6\u8fdb\u884c\u4e00\u7cfb\u5217\u7684\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u8bed\u4e49\u5206\u6790\u548c\u4f18\u5316\uff0c\u4ece\u800c\u4ea7\u751f\u76f8\u5e94\u7684\u6c47\u7f16\u4ee3\u7801\u6587\u4ef6\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u901a\u5e38\u662f\u6574\u4e2a\u7a0b\u5e8f\u6784\u9020\u7684\u6838\u5fc3\u90e8\u5206\uff0c\u4e5f\u662f\u6700\u590d\u6742\u7684\u90e8\u5206\u4e4b\u4e00\u3002

3\u3001\u6c47\u7f16\u7a0b\u5e8f\u4e0d\u76f4\u63a5\u8f93\u51fa\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u800c\u662f\u8f93\u51fa\u76ee\u6807\u6587\u4ef6\u3002\u6c47\u7f16\u7a0b\u5e8f\u53ef\u4ee5\u8c03\u7528LD\u6765\u751f\u6210\u4e00\u4e2a\u53ef\u4ee5\u8fd0\u884c\u7684\u53ef\u6267\u884c\u7a0b\u5e8f\u3002\u4e3a\u4e86\u5f97\u5230\u6700\u7ec8\u7684\u53ef\u6267\u884c\u6587\u4ef6\u201cA\uff0eout\u201d\uff0c\u9700\u8981\u5c06\u4e00\u5927\u5806\u6587\u4ef6\u94fe\u63a5\u5728\u4e00\u8d77\u3002

4\u3001\u5728\u94fe\u63a5\u8fc7\u7a0b\u4e2d\uff0c\u8c03\u7528\u5176\u4ed6\u76ee\u6807\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u51fd\u6570\u7684\u6307\u4ee4\u9700\u8981\u91cd\u65b0\u6821\u51c6\uff0c\u4f7f\u7528\u5176\u4ed6\u76ee\u6807\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u53d8\u91cf\u7684\u6307\u4ee4\u4e5f\u9700\u8981\u91cd\u65b0\u6821\u51c6\u3002

\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1\uff0dc\u8bed\u8a00

1、预处理

在这一阶段,源码中的所有预处理语句得到处理,例如:#include语句所包含的文件内容替换掉语句本身,所有已定义的宏被展开。

根据#ifdef,#if等语句的条件是否成立取舍相应的部分,预处理之后源码中不再包含任何预处理语句。

GCC预处理阶段可以生成.i的文件,通过选项-E可以使编译器在预处理结束时就停止编译。例如:gcc -E -o hello.i hello.c

2、编译

这一阶段,编译器对源码进行词法分析、语法分析、优化等操作,最后生成汇编代码。这是整个过程中最重要的一步,因此也常把整个过程称为编译。

可以通过选项-S使GCC在进行完编译后停止,生成.s的汇编程序。例如:gcc -S -o hello.s hello.c

3、汇编

这一阶段使用汇编器对汇编代码进行处理,生成机器语言代码,保存在后缀为.o的目标文件中。

当程序由多个代码文件构成时,每个文件都要先完成汇编工作,生成.o目标文件后,才能进入下一步的链接工作。

目标文件已经是最终程序的某一部分了,只是在链接之前还不能执行。可以通过-c选项生成目标文件:gcc -c -o hello.o hello.c

4、链接

经过汇编以后的机器代码还不能直接运行。为了使操作系统能够正确加载可执行文件,文件中必须包含固定格式的信息头,还必须与系统提供的启动代码链接起来才能正常运行,这些工作都是由链接器来完成的。gcc -o hello hello.c

5、运行:执行.EXE文件,得到运行结果。



  • C璇█婧愮▼搴忓埌杩愯绋嬪簭缁忚繃鍝嚑涓楠
    绛旓細5銆杩愯锛氭墽琛.EXE鏂囦欢锛屽緱鍒拌繍琛岀粨鏋溿
  • 寮鍙戜竴涓c璇█绋嬪簭瑕缁忚繃鍝鍥涗釜姝ラ
    绛旓細寮鍙戜竴涓狢璇█绋嬪簭闇瑕佺粡杩囩殑鍥涗釜姝ラ锛氱紪杈戙佺紪璇戙佽繛鎺ャ佽繍琛銆侰璇█绋嬪簭鍙互浣跨敤鍦ㄤ换鎰忔灦鏋勭殑澶勭悊鍣ㄤ笂锛屽彧瑕侀偅绉嶆灦鏋勭殑澶勭悊鍣ㄥ叿鏈夊搴旂殑C璇█缂栬瘧鍣ㄥ拰搴擄紝鐒跺悗灏咰婧愪唬鐮佺紪璇戙佽繛鎺ユ垚鐩爣浜岃繘鍒舵枃浠朵箣鍚庡嵆鍙繍琛屻1銆侀澶勭悊锛氳緭鍏ユ簮绋嬪簭骞朵繚瀛(.C鏂囦欢)銆2銆佺紪璇戯細灏嗘簮绋嬪簭缈昏瘧涓虹洰鏍囨枃浠(.OBJ鏂囦欢)銆...
  • C璇█婧愮▼搴忓埌杩愯绋嬪簭缁忚繃鍝嚑涓楠?
    绛旓細1.缂栬緫锛氳緭鍏婧愮▼搴骞跺瓨鐩(.C)2.缂栬瘧锛氬皢婧愮▼搴忕炕璇戜负鐩爣鏂囦欢(.OBJ)3.閾炬帴锛氬皢鐩爣鏂囦欢鐢熸垚鍙墽琛屾枃浠( .EXE)4.杩愯锛氭墽琛.EXE鏂囦欢,寰楀埌杩愯缁撴灉
  • 鍦ㄨ绠楁満涓杩愯涓涓C璇█缂栧啓鐨绋嬪簭,瑕缁忚繃鎬庢牱鐨勫鐞嗚繃绋
    绛旓細寮鍙戜竴涓狢璇█绋嬪簭闇瑕佺粡杩囩殑鍥涗釜姝ラ锛氱紪杈戙佺紪璇戙佽繛鎺ャ佽繍琛銆侰璇█绋嬪簭鍙互浣跨敤鍦ㄤ换鎰忔灦鏋勭殑澶勭悊鍣ㄤ笂锛屽彧瑕侀偅绉嶆灦鏋勭殑澶勭悊鍣ㄥ叿鏈夊搴旂殑C璇█缂栬瘧鍣ㄥ拰搴擄紝鐒跺悗灏咰婧愪唬鐮佺紪璇戙佽繛鎺ユ垚鐩爣浜岃繘鍒舵枃浠朵箣鍚庡嵆鍙繍琛屻1銆佺紪杈戯細杈撳叆婧愮▼搴忓苟淇濆瓨锛堛侰鏂囦欢锛夈2銆佺紪璇戯細灏嗘簮绋嬪簭缈昏瘧鎴愮洰鏍囨枃浠讹紙銆侽BJ鏂囦欢锛夈
  • C璇█鏂囦欢鐨勭紪璇戜笌鎵ц鐨勫洓涓樁娈靛苟鍒嗗埆鎻忚堪
    绛旓細寮鍙慍绋嬪簭鏈夊洓涓楠わ細缂栬緫銆佺紪璇戙佽繛鎺ュ拰杩愯銆備换浣曚竴涓綋绯荤粨鏋勫鐞嗗櫒涓婇兘鍙互浣跨敤C璇█绋嬪簭锛屽彧瑕佽浣撶郴缁撴瀯澶勭悊鍣ㄦ湁鐩稿簲鐨凜璇█缂栬瘧鍣ㄥ拰搴擄紝閭d箞C婧愪唬鐮佸氨鍙互缂栬瘧骞惰繛鎺ュ埌鐩爣浜岃繘鍒舵枃浠朵笂杩愯銆1銆侀澶勭悊锛氬鍏ユ簮绋嬪簭骞朵繚瀛橈紙C鏂囦欢锛夈2銆佺紪璇戯細灏嗘簮绋嬪簭杞崲涓虹洰鏍囨枃浠讹紙Obj鏂囦欢锛夈3銆侀摼鎺ワ細灏...
  • 缂栧啓濂c璇█婧愮▼搴鍚庡浣曡繘琛岀紪璇戝拰杩愯
    绛旓細缂栧啓濂C璇█婧愮▼搴鍚庯紝闇瑕佹寜鐓т互涓嬫楠よ繘琛岀紪璇戝拰杩愯锛1. 淇濆瓨婧浠g爜鏂囦欢锛岀‘淇濇枃浠舵墿灞曞悕涓衡.c鈥濄2. 浣跨敤C璇█缂栬瘧鍣ㄥ皢婧愪唬鐮佹枃浠剁紪璇戞垚鐩爣鏂囦欢銆傚湪鍛戒护琛屼腑杈撳叆鈥済cc 婧愭枃浠跺悕.c -o 鐩爣鏂囦欢鍚嶁濆嵆鍙繘琛岀紪璇戙傚鏋滅紪璇戞垚鍔燂紝灏嗙敓鎴愪竴涓洰鏍囨枃浠躲3. 灏嗙洰鏍囨枃浠堕摼鎺ユ垚鍙墽琛屾枃浠躲傚湪鍛戒护琛屼腑...
  • 涓婃満鎿嶄綔c璇█绋嬪簭涓鑸缁忚繃鍝簺姝ラ
    绛旓細璋冭瘯銆杩愯绋嬪簭浜斻佸鏋滄湁閿欒锛屽啀浠庡ご寮濮嬫墽琛屻備笂鏈鸿緭鍏ュ拰缂栬緫婧愮▼搴銆傞氳繃閿洏鍚戣绠楁満杈撳叆绋嬪簭锛屽鍙戠幇鏈夐敊璇紝瑕佸強鏃舵敼姝c傛渶鍚庡皢姝ゆ簮绋嬪簭浠ユ枃浠跺舰寮忓瓨鏀惧湪鑷繁鎸囧畾鐨勬枃浠跺す鍐(濡傛灉涓嶇壒鍒寚瀹氾紝涓鑸瓨鏀惧湪鐢ㄦ埛褰撳墠鐩綍涓)锛屾枃浠剁敤.c浣滀负鍚庣紑锛岀敓鎴愭簮绋嬪簭鏂囦欢锛屽f.c銆
  • C璇█涓,绋嬪簭鐨勪竴涓畬鏁寸殑杩愯杩囩▼鏄庢牱鐨?
    绛旓細浠巑ain鍑芥暟寮濮嬪埌main鍑芥暟缁撴潫銆傜瓟妗堥堿銆侰璇█甯歌冭冪偣锛1銆佷竴涓C璇█婧愮▼搴鍙互鐢变竴涓垨澶氫釜婧愭枃浠剁粍鎴愩2銆佹瘡涓簮鏂囦欢鍙敱涓涓垨澶氫釜鍑芥暟缁勬垚銆3銆佷竴涓簮绋嬪簭涓嶈鐢卞灏戜釜鏂囦欢缁勬垚锛岄兘鏈変竴涓笖鍙兘鏈変竴涓猰ain鍑芥暟锛屽嵆涓诲嚱鏁般傛槸鏁翠釜绋嬪簭鐨勫叆鍙c4銆佹簮绋嬪簭涓彲浠ユ湁棰勫鐞嗗懡浠わ紙鍖呮嫭include 鍛戒护...
  • c璇█婧愮▼搴忚繍琛鐨勮繃绋嬭缁忚繃鍝鍥涙?
    绛旓細缂栧啓绋嬪簭鐢熸垚.c鍜.h鏂囦欢 缂栬瘧鍣ㄧ紪璇戠敓鎴愮洰鏍囨枃浠.obj/.o 閫氳繃杩炴帴鍣(Linker)灏嗙洰鏍囨枃浠惰繛鎺ョ敓鎴愬彲鎵ц鐨2杩涘埗鏂囦欢.exe 杩愯绋嬪簭.exe寰楀埌缁撴灉
  • 宸茬紪鍐欏ソ涓涓C璇█婧愮▼搴(鍚嶄负file.c),瑕佸湪璁$畻鏈轰笂杩愯,搴旇缁忓巻鍝簺...
    绛旓細棰勫鐞嗭細涓鑸牴鎹绋嬪簭涓畾涔夌殑瀹忥紝鎶婂畠浠浛鎹负鎵浠f浛鐨勫笺傜紪璇(compile)锛氱敓鎴愭眹缂浠g爜 鈥斺攆ile.S 姹囩紪(assembly)锛氬皢姹囩紪绋嬪簭鐢辨眹缂栧櫒(assembler)鐢熸垚鐩爣浠g爜锛堟垨鏈哄櫒浠g爜锛夆斺攆ile.o 閾炬帴(link)锛氭妸鐩爣浠g爜閾炬帴涓哄彲鎵ц鏂囦欢鈥斺攆ile.exe (GUN C Compiler涓鑸敓鎴恆.out)...
  • 扩展阅读:程序已运行但是没窗口 ... 代码写好了怎么运行 ... c语言无法运行程序 ... 运行c语言的四个步骤 ... c++编程 ... c语言怎么运行程序 ... c语言没错但是运行不了 ... visual c怎么运行程序 ... c语言程序运行按哪个键 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网