已编写好一个C语言源程序(名为file.c),要在计算机上运行,应该经历哪些步骤? C语言文件的编译与执行的四个阶段并分别描述

\u5728Linux\u7cfb\u7edf\u4e2d\uff0c\u5982\u4f55\u8fd0\u884c\u4e00\u4e2aC\u8bed\u8a00\u7a0b\u5e8f\uff1f

1\u3001\u6253\u5f00kali linux\u7684\u7ec8\u7aef\u3002\u521b\u5efa\u4e00\u4e2a\u6587\u4ef6\u5e76\u547d\u540d\u4e3atest.c\u3002\u5728\u7ec8\u7aef\u8f93\u5165:touch test.c\u3002

2\u3001\u53ef\u4ee5\u770b\u5230\u5df2\u7ecf\u751f\u6210\u4e86\u4e00\u4e2a\u540e\u7f00\u4e3atest.c\u7684\u6e90\u6587\u4ef6\u3002\u7136\u540e\u7528vim\u5de5\u5177\u6253\u5f00\u8fd9\u4e2a\u6587\u4ef6\u5e76\u7f16\u5199\u4ee3\u7801\u3002\u5728\u7ec8\u7aef\u4e2d\u8f93\u5165\uff1avim test.c\u6216\u8005gvim test.c\u6253\u5f00\u8fd9\u4e2a\u6587\u4ef6\u5e76\u7f16\u5199\u4ee3\u7801\u3002

3\u3001\u7f16\u5199\u5b8c\u4e86\u8fd9\u4e2a\u4ee3\u7801\u3002\u73b0\u5728\u5f00\u59cb\u7f16\u8bd1\u6e90\u6587\u4ef6\u3002\u5728\u7ec8\u7aef\u4e2d\u8f93\u5165\uff1agcc test.cgcc\u662flinux\u81ea\u5e26\u7684c\u8bed\u8a00\u7f16\u8bd1\u5668\u3002\u5982\u679c\u662fwindows\u5219\u8981\u7528ide\u5de5\u5177\u6765\u7f16\u8bd1\u3002linux\u7cfb\u7edf\u4e00\u822c\u5199C\u8bed\u8a00\u7528gcc +vim+gdb\u4e09\u4e2a\u81ea\u5e26\u7684\u5de5\u5177\u5c31\u53ef\u4ee5\u4e86\u3002

4\u3001\u6253\u5b8cgcc test.c\u7f16\u8bd1\u5b8cC\u6e90\u6587\u4ef6\u3002\u7136\u540e\u5c31\u53ef\u4ee5\u770b\u89c1a.out\u7684\u6587\u4ef6\u3002\u4e00\u822clinux\u7cfb\u7edf\u5c31\u9ed8\u8ba4\u4e3aa.out\u4e3a\u7f16\u8bd1\u5b8c\u7684\u6587\u4ef6\u3002\u73b0\u5728\u8fd0\u884ca.out\u6587\u4ef6\u3002\u5728a.out\u6587\u4ef6\u7684\u76ee\u5f55\u4e0b\u6253\u5f00\u7ec8\u7aef\u5e76\u8f93\u5165./a.out\u5c31\u662f\u8fd0\u884c\u6587\u4ef6\u4e86\u3002

5\u3001\u5982\u679c\u60f3\u8981\u7f16\u8bd1\u5b8c\u7684\u6587\u4ef6\u540d\u4e0d\u8981\u7528a.out\u6587\u4ef6\u3002\u5c31\u53ef\u4ee5\u5728\u7f16\u8bd1\u65f6\u6253\u5165.gcc test.c -o test.out\u7136\u540e\u5c31\u53ef\u4ee5\u770b\u89c1\u6709\u4e00\u4e2atest.out.\u6587\u4ef6 \u4e86\u3002-o\u540e\u9762\u8ddf\u7740\u7684\u7f16\u8bd1\u751f\u6210\u7684\u6587\u4ef6\u540d\u3002

6\u3001\u518d\u8fd0\u884ctest.out\u5728\u7ec8\u7aef\u4e2d\u8f93\u5165./test.out\u7ed3\u679c\u5982\u56fe\u3002\u8fd9\u6837\u5728linux\u7cfb\u7edf\u4e0b\u7f16\u8bd1\u5e76\u8fd0\u884cC\u8bed\u8a00\u5c31\u5b8c\u6210\u4e86\u3002

\u5f00\u53d1C\u7a0b\u5e8f\u6709\u56db\u4e2a\u6b65\u9aa4\uff1a\u7f16\u8f91\u3001\u7f16\u8bd1\u3001\u8fde\u63a5\u548c\u8fd0\u884c\u3002



\u4efb\u4f55\u4e00\u4e2a\u4f53\u7cfb\u7ed3\u6784\u5904\u7406\u5668\u4e0a\u90fd\u53ef\u4ee5\u4f7f\u7528C\u8bed\u8a00\u7a0b\u5e8f\uff0c\u53ea\u8981\u8be5\u4f53\u7cfb\u7ed3\u6784\u5904\u7406\u5668\u6709\u76f8\u5e94\u7684C\u8bed\u8a00\u7f16\u8bd1\u5668\u548c\u5e93\uff0c\u90a3\u4e48C\u6e90\u4ee3\u7801\u5c31\u53ef\u4ee5\u7f16\u8bd1\u5e76\u8fde\u63a5\u5230\u76ee\u6807\u4e8c\u8fdb\u5236\u6587\u4ef6\u4e0a\u8fd0\u884c\u3002



1\u3001\u9884\u5904\u7406\uff1a\u5bfc\u5165\u6e90\u7a0b\u5e8f\u5e76\u4fdd\u5b58\uff08C\u6587\u4ef6\uff09\u3002



2\u3001\u7f16\u8bd1\uff1a\u5c06\u6e90\u7a0b\u5e8f\u8f6c\u6362\u4e3a\u76ee\u6807\u6587\u4ef6\uff08Obj\u6587\u4ef6\uff09\u3002



3\u3001\u94fe\u63a5\uff1a\u5c06\u76ee\u6807\u6587\u4ef6\u751f\u6210\u4e3a\u53ef\u6267\u884c\u6587\u4ef6\uff08EXE\u6587\u4ef6\uff09\u3002



4\u3001\u8fd0\u884c\uff1a\u6267\u884c\uff0c\u83b7\u53d6\u8fd0\u884c\u7ed3\u679c\u7684EXE\u6587\u4ef6\u3002

\u6269\u5c55\u8d44\u6599\uff1a

\u5c06C\u8bed\u8a00\u4ee3\u7801\u5206\u4e3a\u7a0b\u5e8f\u7684\u51e0\u4e2a\u9636\u6bb5\uff1a



1\u3001\u9996\u5148\uff0c\u6e90\u4ee3\u7801\u6587\u4ef6\u6d4b\u8bd5\u3002\u4ee5\u53ca\u76f8\u5173\u7684\u5934\u6587\u4ef6\uff0c\u6bd4\u5982stdio\u3002H\u3001\u7531\u9884\u5904\u7406\u5668CPP\u9884\u5904\u7406\u4e3a\uff0eI\u6587\u4ef6\u3002\u9884\u7f16\u8bd1\u7684\u3002\u6587\u4ef6\u4e0d\u5305\u542b\u4efb\u4f55\u5b8f\u5b9a\u4e49\uff0c\u56e0\u4e3a\u6240\u6709\u5b8f\u90fd\u5df2\u5c55\u5f00\uff0c\u5e76\u4e14\u5305\u542b\u7684\u6587\u4ef6\u5df2\u63d2\u5165\u3002\u6211\u5f52\u6863\u3002



2\u3001\u7f16\u8bd1\u8fc7\u7a0b\u662f\u5bf9\u9884\u5904\u7406\u6587\u4ef6\u8fdb\u884c\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u8bed\u4e49\u5206\u6790\u548c\u4f18\u5316\uff0c\u751f\u6210\u76f8\u5e94\u7684\u6c47\u7f16\u4ee3\u7801\u6587\u4ef6\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u5f80\u5f80\u662f\u6574\u4e2a\u7a0b\u5e8f\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\u53ef\u4ee5\u8fd0\u884c\u7684\u53ef\u6267\u884c\u7a0b\u5e8f\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u60a8\u9700\u8981\u94fe\u63a5\u5927\u91cf\u7684\u6587\u4ef6\u624d\u80fd\u83b7\u5f97\u201ca.out\u201d\uff0c\u5373\u6700\u7ec8\u7684\u53ef\u6267\u884c\u6587\u4ef6\u3002



4\u3001\u5728\u94fe\u63a5\u8fc7\u7a0b\u4e2d\uff0c\u9700\u8981\u91cd\u65b0\u8c03\u6574\u5176\u4ed6\u76ee\u6807\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u51fd\u6570\u8c03\u7528\u6307\u4ee4\uff0c\u800c\u5176\u4ed6\u76ee\u6807\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u53d8\u91cf\u4e5f\u5b58\u5728\u540c\u6837\u7684\u95ee\u9898\u3002
\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1-c\u8bed\u8a00

  1. 预处理:一般根据程序中定义的宏,把它们替换为所代替的值。

  2. 编译(compile):生成汇编代码 ——file.S

  3. 汇编(assembly):将汇编程序由汇编器(assembler)生成目标代码(或机器代码)——file.o

  4. 链接(link):把目标代码链接为可执行文件——file.exe (GUN C Compiler一般生成a.out)



不同的编译器不尽相同,以gcc为例:

  1. 预处理(cpp):得到的文件一般仍保存为.c文件.

  2. 编译(cc1):把经过预处理的.c文件编译成.s文件.

  3. 汇编(as):把.s文件汇编成目标文件.o.

  4. 链接(ld):把目标文件和库文件等链接起来生成可执行文件(windows上为.exe文件).

  5. 运行:加载到内存.

概括的说,有预处理,编译,链接等过程.



  • 灏C璇█婧愮▼搴(hello.c)鏂囦欢涓墍鏈夋敞閲婂垹闄ゅ悗,瀛樺叆鍙﹀涓涓鏂囦欢(new...
    绛旓細//灏鍐欏ソ鐨刪ello.c鏀惧叆宸ョ▼鐩綍 include<stdio.h> main(){ FILE *q,*p; //澹版槑涓や釜鏂囦欢鎸囬拡 char a[1000],c;//鏁扮粍a锛屽瓧绗 int i,end;//i鐢ㄤ簬璁℃暟锛宔nd鐢ㄤ簬鏍囪鏄惁璇诲埌鏂囦欢鏈熬 p=fopen("hello.c","r");//璇绘柟寮忔墦寮p q=fopen("new_hello.c","w");//鍐欐柟寮忔墦寮q while...
  • 鐢–璇█缂栧啓涓涓璁$畻鏈澶у肩殑绋嬪簭
    绛旓細C绋嬪簭浠g爜濡備笅锛氳В鏋愶細1銆侀鍏堝畾涔塧锛宐锛宑锛宮ax鍥涗釜鏁村瀷鍙橀噺锛屽苟杈撳叆a锛宐锛宑涓変釜鏁帮紱2銆佸畾涔夋渶澶у间负a锛宨f寰幆浣撹繕鏄b鍜宑杩涜寰幆锛3銆佹牴鎹惊鐜綋鍒ゆ柇鏈澶х殑鍊硷紝鏈鍚庤緭鍑虹粨鏋溿
  • 鐢–璇█缂栧啓涓瀹屾暣婧愮▼搴,浠庨敭鐩樿緭鍏涓涓瀛楃涓睸tr1,鍦ㄦ柊鐨勪竴琛岃緭鍏ヤ竴...
    绛旓細for(i=0;*(d+i)!=0;i++)(d+i)=*(d+i+1);} }int main(){ char Str1[100]={0};char Char_Check;int i;gets(Str1);scanf("%c",&Char_Check);for(i=0;i<strlen(Str1);i++)//涓娆″彧鑳藉垹闄や竴涓壒瀹氬瓧绗︼紝寰幆鍒犻櫎锛屾渶澶氬惊鐜瓧绗︿覆鏈澶ч暱搴 deleteChar(Str1,Char_Check);...
  • C璇█婧愮▼搴鏂囦欢鍚嶇殑鍚庣紑鏄.OBJ,缁忚繃缂栬瘧鍚,鐢熸垚鏂囦欢鐨勫悗缂鏄粈涔?缁忚繃...
    绛旓細C璇█婧愮▼搴鏂囦欢鍚嶇殑鍚庣紑鏄.c銆侰婧愮▼搴忕粡杩嘋缂栬瘧绋嬪簭缂栬瘧涔嬪悗鐢熸垚涓涓悗缂涓.OBJ鐨勪簩杩涘埗鏂囦欢锛岀劧鍚庣敱绉颁负鈥滆繛鎺ョ▼搴忊濈殑杞欢锛屾妸姝.OBJ鏂囦欢涓嶤璇█鎻愪緵鐨勫悇绉嶅簱鍑芥暟杩炴帴璧锋潵鐢熸垚涓涓悗缂涓.EXE鐨勫彲鎵ц鏂囦欢銆傜敱楂樼骇璇█缂栧啓鐨勭▼搴忕О涓衡滄簮绋嬪簭鈥濓紝鎶婄敱浜岃繘鍒朵唬鐮佽〃绀虹殑绋嬪簭绉颁负鈥滅洰鏍囩▼搴忊濄備负浜嗘妸...
  • 浣跨敤C璇█缂栧啓涓涓▼搴瀹屾垚浠ヤ笅浠诲姟
    绛旓細1,瑙o細婧愮▼搴濡備笅锛歩nclude <stdio.h> int juzhen(int a[3][3]){ int i,j,t;for (i=0;i<3;i++)for (j=i+1;j<3;j++){ t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;} } int juchen(int a[3][3],int b[][3],int c[][3]){ int i,j;for (i=0;i<3...
  • C璇█婧愮▼搴忓悕鐨勫悗缂鏄
    绛旓細C璇█婧愮▼搴鍚庣紑涓.c锛岀紪璇戝悗鐨勫悗缂涓 .obj 鎴 .o锛岃繛鎺ュ悗鐢熸垚鐨勫彲鎵ц鏂囦欢鐨勫悗缂涓.exe銆侰璇█鏄竴闂ㄩ潰鍚戣繃绋嬬殑銆佹娊璞″寲鐨勯氱敤绋嬪簭璁捐璇█锛屽箍娉涘簲鐢ㄤ簬搴曞眰寮鍙戙侰璇█鑳戒互绠鏄撶殑鏂瑰紡缂栬瘧銆佸鐞嗕綆绾у瓨鍌ㄥ櫒銆侰璇█鏄粎浜х敓灏戦噺鐨勬満鍣ㄨ瑷浠ュ強涓嶉渶瑕佷换浣曡繍琛岀幆澧冩敮鎸佷究鑳借繍琛岀殑楂樻晥鐜囩▼搴忚璁¤瑷銆傚敖绠...
  • 濡備綍浣跨敤Visual Studio 2010缂栧啓涓涓狢璇█绋嬪簭
    绛旓細绗簲姝ワ細濡備笅鍥炬墍绀猴紝鍦ㄥ乏鏍忎腑鍗曞嚮銆怴isual C++銆戯紝鍦ㄤ腑闂存爮閫夋嫨銆怌++鏂囦欢銆戯紝鍦ㄤ笅闈㈢殑鍚嶇О鏍忛噷濉啓C璇█绋嬪簭鐨鍚嶇О锛娉ㄦ剰锛氫笉瑕佸繕璁板姞涓婃枃浠剁殑鍚庣紑鍚.c锛夛紝浣嶇疆淇濇寔榛樿涓嶅彉锛屽崟鍑汇愬畬鎴愩戣繘鍏ョ鍏锛屽鍥炬墍绀恒傜鍏锛氬涓嬪浘鎵绀猴紝鑷姩鍔犺浇.c鏂囦欢锛堝垵濮嬫槸绌虹櫧鐨勶級锛岀劧鍚庡啓鍏ヤ竴涓畝鍗曠殑C璇█...
  • 濡備綍浣跨敤Visual Studio 2010缂栧啓涓涓狢璇█绋嬪簭
    绛旓細鐐瑰嚮涓嬩竴姝ワ紝娉ㄦ剰锛屾鏃跺嚭鐜扮殑瀵硅瘽妗嗕竴瀹氳鎶婄┖椤圭洰鍓嶉潰缁欏嬀涓婏紝鍗曞嚮涓嬩竴姝ワ紝鍗曞嚮瀹屾垚 鐐瑰嚮婧愭枃浠讹紝鍙冲嚮寮瑰嚭閫夐」锛岄紶鏍囩Щ鍔ㄥ埌娣诲姞锛屾壘鍒伴」鐩紝鍗曞嚮杩涜娣诲姞銆傛壘鍒癈++鏂囦欢锛屽崟鍑诲苟鍛藉悕涓123.c锛屽洜涓烘槸缂栧啓C璇█锛屾墍浠ヤ竴瀹氳鍔犺繖涓悗缂鍚嶃傜偣鍑荤‘瀹 鎴戜滑鎷跨紪鍐欐眰涓や釜鏁存暟鐨勫拰涓句緥璇存槑锛浠g爜鍐欏畬涔嬪悗锛屾壘鍒...
  • C璇█婧愮▼搴鏂囦欢銆佺洰鏍囨枃浠跺拰鍙墽琛屾枃浠剁殑鎵╁睍鍚嶆槸浠涔?
    绛旓細婧愮▼搴忥細绋嬪簭鍙互鐢ㄩ珮绾ц瑷鎴栨眹缂璇█缂栧啓锛岀敤楂樼骇璇█鎴栨眹缂栬瑷缂栧啓鐨勭▼搴忕О涓烘簮绋嬪簭銆C璇█婧愮▼搴鐨勬墿灞曞悕涓衡滐紟c鈥濄傛簮绋嬪簭涓嶈兘鐩存帴鍦ㄨ绠楁満涓婃墽琛岋紝闇瑕佺敤鈥滅紪璇戠▼搴忊濆皢婧愮▼搴忕紪璇戜负浜岃繘鍒跺舰寮忕殑浠g爜銆傜洰鏍囩▼搴忥細婧愮▼搴忕粡杩団滅紪璇戠▼搴忊濈紪璇戞墍寰楀埌鐨勪簩杩涘埗浠g爜绉颁负鐩爣绋嬪簭銆傜洰鏍囩▼搴忕殑鎵╁睍鍚嶄负鈥...
  • 缂栧啓涓涓猚璇█绋嬪簭,瀹炵幇褰曞叆瀛︾敓瀛﹀彿鍜屽鍚嶄俊鎭殑鍔熻兘
    绛旓細1銆侀鍏堝垱寤涓涓猚璇█椤圭洰銆傜劧鍚庡彸閿ご鏂囦欢锛屽垱寤轰竴涓猄tu鐨勫ご鏂囦欢銆2銆佺劧鍚缂栧啓澶存枃浠剁殑浠g爜銆傚啀灏嗘暟鎹粨鏋勭殑澧炲垹鏀规煡鍜岀粨鏋勪綋鍐欏叆澶存枃浠躲3銆佺劧鍚庡湪婧愭枃浠朵腑鍒涘缓main婧愭枃浠跺拰Stu婧愭枃浠躲傚啀main鏂囦欢涓啓鍏nt mian锛堬級浠g爜銆4銆佺劧鍚庡湪mian涓诲嚱鏁颁腑锛屽啓鍏hile璇彞鏃犻檺寰幆銆傚啀鍐欏叆Init鍑芥暟銆5銆佺劧鍚庡湪...
  • 扩展阅读:c++简单程序实例 ... 在一个c语言程序中 ... 如何自己编程做游戏 ... 在一个c源程序中 ... 一个完整的c源程序 ... 简述一个c程序的构成 ... 一个c语言的源程序中 ... 10个常用的编程语言 ... c语言编一个最简单的程序 ...

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