編譯合鏈接
C語言編輯的作用是檢查語法,製作C語言的源文件和頭文件,生成匯編代碼。
C語言編輯的作用是將匯編代碼轉換機器碼。在這一步中,會對文件內部的語法語義做處理,如果編譯出錯,無法進行後續動作。
C語言鏈接的作用是將機器碼鏈接到一起生成可執行程序。這一步會對文件之間的關聯做檢查,如果出錯,將不會生成可執行程序,也就無法執行。
(1)編譯合鏈接擴展閱讀:
C語言鏈接時,將源文件中用到的庫函數與匯編生成的目標文件.o合並生成可執行文件。該可執行文件會變大很多,一般是調用自己電腦上的靜態庫。
靜態庫和應用程序編譯在一起,在任何情況下都能運行,而動態庫是動態鏈接,文件生效時才會調用。很多代碼編譯通過,鏈接失敗就極有可能在靜態庫和動態庫這出現了紕漏,要視情況解決。缺少相關所需文件,就會鏈接報錯。這個時候就要檢查下本地的鏈接庫是不是缺損。
Ⅱ c語言裡面的編譯和鏈接是怎麼回事啊
編譯是把你輸入的源代碼生成目標代碼(即:以.obj為後綴名的文件),連接是把.obj文件和系統庫相連接(如:#include 中所聲明的文件)。如果直接按run,如果源代碼正確則是系統自動編譯連接,要是源代碼有錯誤則無法運行,並顯示錯誤信息。
Ⅲ 璋佽兘鏁欐暀鎴戞庝箞瀛﹀崟鐗囨満,鍏堝︿粈涔,鎬庝箞鍏ラ棬
鍏堝﹀熀紜璇劇▼錛屼粠榪欎竴鏂歸潰鍏ラ棬銆
宓屽叆寮忓︿範璺寰勬槸涓涓婕闀胯屽張鏈夎叮鐨勮繃紼嬶紝鏈夎叮鏄闅忕潃鐭ヨ瘑鐨勭Н緔鎰熷彈鐨勬垚灝辨劅錛屾極闀挎槸鐩稿逛簬杞浠舵潵璇達紝鍏ラ棬榪樻槸鏈変竴瀹氶棬妲涚殑銆
浣嗕竴瀹氫笉瑕佷竴涓浜哄︿範錛屽洜涓轟笂榪板︿範璺寰勯暱錛岄毦搴︽笎娓愬姞娣憋紝涓涓浜烘繪湁涓嶇悊瑙o紝鏅︽訂闅炬噦鐨勫湴鏂癸紝浣犻渶瑕佹湁浜烘潵鎺㈣ㄣ傛敞鎰忔槸鎺㈣錛屼笉鏄涓鍛崇殑璇鋒暀鍒浜猴紝閬囧埌闂棰樿嚜宸卞厛閫氳繃緗戠粶鏌ヨ㈣祫鏂欙紝鍏堝︿範鍜屾濊冿紝鍐嶈鋒暀浠栦漢銆傚洜姝ゅ己鐑堝緩璁鐜板疄鐢熸椿涓鎵句竴涓や釜鍚屾牱鏂瑰悜鐨勪漢涓璧峰︿範錛屽湪瀛︽牎灝辨瘮杈冩柟渚誇簡錛屽姞涓鍗曠墖鏈虹ぞ鍥㈠氨鏈夊︿範姘涘洿浜嗐
1銆佸熀紜璇劇▼
1.1C璇璦
鍏蜂綋緇嗚妭鐨勭煡璇嗙偣鎴戣繖閲屽氨涓嶈︾粏鐨勫睍寮鎻忚堪浜嗭紝姣曠珶C璇璦鐨勪功鍜岃嗛戞暀紼嬬綉涓婁竴澶у爢錛屽︿範璧勬簮鍏呭垎銆
浣嗚繖閲屽緩璁錛孋璇璦鐨勫熀紜榪樻槸瑕佹墦鎵庡疄鐨勶紝鏈綆鍗曠殑鏂規硶灝辨槸楂樹腑瀵逛粯楂樿冪殑鏂規硶錛氶樻搗鎴樻湳銆傚叾瀹炲氨鏄灝咰璇璦涔︾睄鍚庨潰鐨凜涔犻橈紝姣忎竴棰樼殑鍋氫竴閬嶏紝鑷宸卞姩鎵嬫暡涓閬嶏紝鎯充竴閬嶏紝璋冭瘯涓閬嶃傝繖鏍峰皢浼氭瀬澶х殑閿葷偧鍒頒綘鐨勫熀紜緙栫爜鑳藉姏銆傝夊緱C璇璦璇炬湰鍚庨潰鐨勪範棰樺お綆鍗曟病鏈夐毦搴︾殑錛屽彲浠ヨ漿鎴楲eetCode銆
1.2鏁板瓧鐢佃礬
鍏蜂綋鐨勭粏鑺傝村疄璇濇垜涔熶笉璁板緱浜嗭紝浣嗘槸鏈鍩烘湰浣犺佺煡閬撲笌鎴栭潪闂ㄥ備綍瀹炵幇緇勫悎閫昏緫錛涚粍鍚堥昏緫鐨勮緭鍑哄弽棣堝埌杈撳叆浣滀負涓嬩竴嬈¢昏緫鐨勮緭鍏ュ氨鏋勬垚浜嗘椂搴忕數璺錛屾帉鎻℃椂搴忛昏緫鐨勫垎鏋愭柟娉曪紱鍙﹀栬繕闇鎺屾彙鏁版嵁閿佸瓨鍣ㄧ被鐨勬帀鐢墊暟鎹涓嶄涪澶辯殑鐢佃礬鏄浠涔堟牱鐨勫師鐞嗐
涓浜鴻夊緱錛屽︿範鏁扮數涓昏佹槸瑕佺悊瑙e埌涓嬮潰榪欏嚑涓鐐癸細浜虹被鏂囨槑鐨勮繘姝ワ紝鎺㈢儲鍙戠幇浜哖N緇撹繖縐嶄笢瑗垮叿鏈夊崟鍚戝肩數鎬э紝鐢辨ゅ埗浣滃仛浜嗕簩鏋佺°
鐢變簬浜屾瀬綆$殑鍗曞悜瀵肩數鎬э紝鐢辨ゅ張鍒朵綔鍑轟簡涓庢垨闈為棬鐢佃礬銆傦紙鐞嗚В浜屾瀬綆″備綍鏋勬垚涓庢垨闈為昏緫闂錛変漢浠鍋氬嚭浜嗕笌鎴栭潪閫昏緫鍚庯紝鍙戠幇涓栫晫涓婇昏緫灝辨槸鍦ㄦゅ熀紜涓婂嶆潅鍖栬屽凡銆傚彲鐢ㄩ氳繃涓庢垨闈為棬瀹炵幇鍔犳硶鍣錛岀Щ浣嶅櫒錛岀紪鐮佸櫒錛岃瘧鐮佸櫒絳夊悇縐嶆兂瑕佸疄鐜扮殑緇勫悎閫昏緫錛堟帉鎻¢氳繃闂ㄧ數璺璁捐$粍鍚堥昏緫鐨勬柟娉曪級銆
浣嗙幇瀹炵敓媧諱腑鐨勯昏緫寰寰涓嶅儚緇勫悎閫昏緫榪欎箞鍗曠函錛岃緭鍏ヨ漿鍖栦負杈撳嚭灝辯粨鏉熶簡銆傚線寰涓婁竴嬈$殑杈撳嚭浼氬獎鍝嶅埌涓嬩竴嬈″勭悊銆傛椂搴忛昏緫鐨勫嚭鐜板氨榪欎箞寮曞叆浜嗭紝鍚屾椂涔熷甫鏉ヤ簡鏃墮挓鐨勬傚康銆傦紙鎺屾彙緇勫悎閫昏緫杈撳嚭鍙嶉堜負涓嬩竴涓鏃墮挓鐨勮緭鍏ュ緱鍒版椂搴忕數璺鐨勫垎鏋愭柟娉曪級銆
涓婇潰榪欎簺閮芥槸瀹炴椂杈撳嚭鐨勶紝鍗寵緭鍏ョ殑鍚屾椂鎵嶈兘寰楀埌瀵瑰簲鐨勮緭鍑猴紝涓鏃﹁緭鍏ユ病鏈夛紝杈撳嚭涔熷氨涓浜嗐傛暟鎹娌℃湁鍔炴硶淇濆瓨銆備簬鏄浜轟滑鍙堥氳繃闂ㄧ數璺鍒朵綔鍑轟簡鍙浠ラ攣瀛樻暟鎹鐨凴S瑙﹀彂鍣錛孭ROM瀛樺偍鍣ㄣ傦紙鎺屾彙瀛樺偍鍣ㄧ殑鐢佃礬鍘熺悊錛屽備綍閫氳繃鎬葷嚎鏃跺簭璁塊棶錛夈
鍑嗙『鐞嗚В浜嗕笂榪板唴瀹瑰悗錛屽湪鍚庣畫瀛︿範寰鏈哄師鐞嗙殑璇劇▼涓錛屼綘浼氬彂鐜癈PU鐨勬牳蹇冨崟鍏冨氨鏄涓涓澶嶆潅鐐圭殑鏃跺簭閫昏緫錛岃屽栬捐祫婧愮殑璇濓紝閮芥槸浜涚粍鍚堥昏緫鎴栨椂搴忛昏緫鍖呰搗鏉ョ殑榛戠洅瀛愩
5銆佺Н緔涓庢濊
5.1鐭ヨ瘑浣撶郴搴
鎱㈡參鐨勶紝褰撴垜榪涘叆涓涓緇嗗垎鐨勯嗗煙錛岄煶瑙嗛戝紑鍙戦嗗煙錛屽氨浼氬彂鐜幫紝寰堝氭椂鍊欙紝涓嶄粎浠呮槸鐔熺粌閫氱敤寮鍙戣兘鍔涳紝鍗蟲垜涓婇潰鎻愬埌鐨勯┍鍔ㄥ紑鍙戙佽蔣浠朵笟鍔″紑鍙戣繖浜涙妧鑳姐傚緢澶氫笟鍔′緷璧栦簬浣犺佹噦涓撲笟鐭ヨ瘑鍙鑳藉緱蹇冨簲鎵嬶紝涓嶇劧榪炰唬鐮佷腑鐨勬暟鎹緇撴瀯涓轟粈涔堣佸傛よ捐¢兘鎼炰笉鏄庣櫧銆
鍥犳や絾榪涘叆涓撲笟棰嗗煙錛屽彲浠ュ皾璇曟參鎱㈢殑灝嗗鉤鏃剁Н緔鐨勭煡璇嗙粍緇囪搗鏉ワ紝鎱㈡參鐨勭Н緔錛屾渶寮濮嬪彲鑳借嚜宸變篃鏄涓鐭ュ崐瑙o紝鍗氬㈡妱涓鎶勶紝瀹樻柟鍗忚鏂囨。緲昏瘧緲昏瘧銆備絾鏄鐭ヨ瘑灝辨槸榪欐牱鐨勶紝鏈寮濮嬫病鏈夋垚浣撶郴涔嬪墠錛屼竴鐭ュ崐瑙e緢姝e父錛屼竴鏃﹀埌浜嗕竴瀹氱殑閲忥紝鐔熸倝鍚庯紝涓鏃︾煡璇嗕覆璧鋒潵鍚庯紝閭g嶇殑鋙嶆眹璐閫氱殑鎰熻夋槸鏋佸叾緹庡欑殑銆
鍥犳わ紝寤鴻騫蟲椂瀛︿範鐨勮繃紼嬩腑錛屽吇鎴愬仛絎旇扮殑濂戒範鎯銆傛兂瑕佹繁鍏ョ爺絀墮偅涓鏂歸潰鍚庯紝鍙浠ヤ笉鏂鐨勭Н緔瀛︿範錛岃繘琛岀郴緇熺殑鏁寸悊錛屾參鎱㈢殑絳夊緟鋙嶄細璐閫氱殑閭d竴鏃ュ埌鏉ュ氨鍙銆傛垜鐩鍓嶄嬌鐢ㄧ殑璇闆鐭ヨ瘑搴擄紝縐佷漢鏈嶅姟鍣ㄦ惌寤虹殑鏄痵howdoc鏂囨。搴撱
5.2鏂囨。瑙勮寖錛嗕唬鐮佹ā鍧楀寲錛堢粍浠跺寲錛
涓嶉毦鍙戠幇錛屽緢澶氬紑婧愯蔣浠墮兘閰嶆湁璇︾粏鐨勬枃妗o紝浠庢渶綆鍗曠殑浠嬬粛榪欎釜杞浠舵槸浠涔堬紝鏈変粈涔堢敤錛岃ユ庝箞鐢錛屽埌娉ㄦ剰浜嬮」錛岄兘鍐欏緱涓娓呬簩妤氥傜敋鑷蟲湁鐨勫紑婧愯蔣浠惰繕浼氫粙緇嶅唴閮ㄧ殑瀹炵幇緇嗚妭銆
鍐嶅弬鑰冩垜涔嬪墠鎻愬埌鐨勶紝鑷宸辨浘浠婂啓榪囩殑浠g爜灝辨槸鏈濂界殑絎旇幫紝鎴戜滑鍙浠ヤ笉鏂鐨勫畬鍠勮嚜宸辨浘浠婂啓榪囩殑浠g爜錛屾參鎱㈢殑灝嗙嫭絝嬪姛鑳界殑浠g爜妯″潡鍗曠嫭鍑烘潵銆傛柟渚胯嚜宸變互鍚庡湪涓嶅悓鐨勯」鐩澶嶇敤銆
澶嶇敤鐨勮瘽錛屾瘯絝熷ソ璁版т笉濡傜儌絎斿ご錛屼唬鐮佹牳蹇冩濇兂錛屼竴涓鏈堜袱涓鏈堣繕鑳借板緱錛屾椂闂翠箙鐐瑰埆璇存牳蹇冩濇兂浜嗭紝鍙鑳借繛浣跨敤閮戒笉澶璁板緱鎬庝箞鐢ㄤ簡銆傝繖涓鏃跺欏氨鎰忚瘑鍒頒簡錛屼唬鐮侀厤濂楁枃妗d粙緇嶇殑閲嶈佹с傛瘯絝熷湪浠g爜鍒氬紑鍙戝畬鎴愮殑鏃跺欙紝瓚佺潃鎬濊礬娓呮櫚鐨勬椂鍊欙紝鎶婃枃妗e啓鎺夛紝娉ㄦ剰浜嬮」璁板綍鐨勬竻娓呮氭氾紝鏄庢槑鐧界櫧鍚庯紝鍚庨潰澶嶇敤灝嗕細鏂逛究寰堝氥