導航:首頁 > 源碼編譯 > g編譯o文件

g編譯o文件

發布時間:2025-06-20 13:55:02

⑴ GCC 編譯問題:/usr/bin/ld:../bin/main.o: file format not recognized; treating as linker script

把-MM去掉,加了這個選項導致後面那個.o不是目標文件而是依賴文件了。

linux鐨刧cc鍛戒護linux鐨刧cc

linuxgcc緙栬瘧濂紺鏂囦歡鍚庣敓鎴.o鐩鏍囨枃浠訛紝浣嗘槸鍦ㄦ墽琛屼腑錛$./test錛夊嚭鐜版病鏈夐偅涓鏂囦歡鎴栫洰褰曪紝璇峰ぇ紲炲府蹇欙紵

.o鏂囦歡鏄涓嶈兘琚鎵ц岀殑錛宑鐨勬簮鐮佽佺粡榪囩紪璇戝拰閾炬帴鎵嶈兘鐢熸垚鍙鎵ц屾枃浠訛紝浣犲彧鏄緙栬瘧浜嗭紝娌℃湁閾炬帴錛岃繖涓鏂囦歡鐩稿綋浜嶹indows涓嬬殑test.obj鑰屽凡銆倈cc-Walltest.c-otest

Linux鐨刧cc鏄鎬庝箞鐢ㄧ殑錛

鍦ㄧ粓絝涓杈撳叆gcc鏂囦歡鍚-o鐩鏍囨枃浠跺悕鐒跺悗./鐩鏍囨枃浠跺悕灝辮屼簡錛屾病鏈夌洰鏍囨枃浠跺悕錛岃嚜鍔ㄥ瓨涓篴鎵ц./a灝辮屼簡銆傚湪浣跨敤Gcc緙栬瘧鍣ㄧ殑鏃跺欙紝鎴戜滑蹇呴』緇欏嚭涓緋誨垪蹇呰佺殑璋冪敤鍙傛暟鍜屾枃浠跺悕縐般侴CC緙栬瘧鍣ㄧ殑璋冪敤鍙傛暟澶х害鏈100澶氫釜錛屽叾涓澶氭暟鍙傛暟鎴戜滑鍙鑳芥牴鏈灝辯敤涓嶅埌錛岃繖閲屽彧浠嬬粛鍏朵腑鏈鍩烘湰銆佹渶甯哥敤鐨勫弬鏁般侴CC鏈鍩烘湰鐨勭敤娉曟槸鈭秅cc鍏朵腑options灝辨槸緙栬瘧鍣ㄦ墍闇瑕佺殑鍙傛暟錛宖ilenames緇欏嚭鐩稿叧鐨勬枃浠跺悕縐般-c錛屽彧緙栬瘧錛屼笉榪炴帴鎴愪負鍙鎵ц屾枃浠訛紝緙栬瘧鍣ㄥ彧鏄鐢辮緭鍏ョ殑.c絳夋簮浠g爜鏂囦歡鐢熸垚.o涓哄悗緙鐨勭洰鏍囨枃浠訛紝閫氬父鐢ㄤ簬緙栬瘧涓嶅寘鍚涓葷▼搴忕殑瀛愮▼搴忔枃浠躲-ooutput_filename錛岀『瀹氳緭鍑烘枃浠剁殑鍚嶇О涓簅utput_filename錛屽悓鏃惰繖涓鍚嶇О涓嶈兘鍜屾簮鏂囦歡鍚屽悕銆傚傛灉涓嶇粰鍑鴻繖涓閫夐」錛実cc灝辯粰鍑洪勮劇殑鍙鎵ц屾枃浠禷.out銆-g錛屼駭鐢熺﹀彿璋冭瘯宸ュ叿(GNU鐨刧db)鎵蹇呰佺殑絎﹀彿璧勮錛岃佹兂瀵規簮浠g爜榪涜岃皟璇曪紝鎴戜滑灝卞繀欏誨姞鍏ヨ繖涓閫夐」銆-O錛屽圭▼搴忚繘琛屼紭鍖栫紪璇戙佽繛鎺ワ紝閲囩敤榪欎釜閫夐」錛屾暣涓婧愪唬鐮佷細鍦ㄧ紪璇戙佽繛鎺ヨ繃紼嬩腑榪涜屼紭鍖栧勭悊錛岃繖鏍蜂駭鐢熺殑鍙鎵ц屾枃浠剁殑鎵ц屾晥鐜囧彲浠ユ彁楂橈紝浣嗘槸錛岀紪璇戙佽繛鎺ョ殑閫熷害灝辯浉搴斿湴瑕佹參涓浜涖-O2錛屾瘮-O鏇村ソ鐨勪紭鍖栫紪璇戙佽繛鎺ワ紝褰撶劧鏁翠釜緙栬瘧銆佽繛鎺ヨ繃紼嬩細鏇存參銆-Idirname錛屽皢dirname鎵鎸囧嚭鐨勭洰褰曞姞鍏ュ埌紼嬪簭澶存枃浠剁洰褰曞垪琛ㄤ腑錛屾槸鍦ㄩ勭紪璇戣繃紼嬩腑浣跨敤鐨勫弬鏁般侰紼嬪簭涓鐨勫ご鏂囦歡鍖呭惈涓ょ嶆儏鍐碘埗A)#includemyinc.h>B)#include鈥渕yinc.h鈥濆叾涓錛孉綾諱嬌鐢ㄥ皷鎷鍙(>)錛孊綾諱嬌鐢ㄥ弻寮曞彿(鈥溾)銆傚逛簬A綾伙紝棰勫勭悊紼嬪簭cpp鍦ㄧ郴緇熼勮懼寘鍚鏂囦歡鐩褰(濡/usr/include)涓鎼滃葷浉搴旂殑鏂囦歡錛岃孊綾伙紝棰勫勭悊紼嬪簭鍦ㄧ洰鏍囨枃浠剁殑鏂囦歡澶瑰唴鎼滅儲鐩稿簲鏂囦歡銆侴CC鎵ц岃繃紼嬬ず渚嬬ず渚嬩唬鐮乤.c錛#includestdio.h>intmain(){printf("hellon");}棰勭紪璇戣繃紼嬶細榪欎釜榪囩▼澶勭悊瀹忓畾涔夊拰include錛屽苟鍋氳娉曟鏌ャ傚彲浠ョ湅鍒伴勭紪璇戝悗錛屼唬鐮佷粠5琛屾墿灞曞埌浜910琛屻倈cc-Ea.c-oa.icata.c|wc-l5cata.i|wc-l910緙栬瘧榪囩▼錛氳繖涓闃舵碉紝鐢熸垚奼囩紪浠g爜銆倈cc-Sa.i-oa.scata.s|wc-l59奼囩紪榪囩▼錛氳繖涓闃舵碉紝鐢熸垚鐩鏍囦唬鐮併傛よ繃紼嬬敓鎴怑LF鏍煎紡鐨勭洰鏍囦唬鐮併倈cc-ca.s-oa.ofilea.oa.o:ELF64-bitLSBrelocatable,AMDx86-64,version1(SYSV),notstripped閾炬帴榪囩▼錛氶摼鎺ヨ繃紼嬨傜敓鎴愬彲鎵ц屼唬鐮併傞摼鎺ュ垎涓轟袱縐嶏紝涓縐嶆槸闈欐侀摼鎺ワ紝鍙﹀栦竴縐嶆槸鍔ㄦ侀摼鎺ャ備嬌鐢ㄩ潤鎬侀摼鎺ョ殑濂藉勬槸錛屼緷璧栫殑鍔ㄦ侀摼鎺ュ簱杈冨皯錛屽瑰姩鎬侀摼鎺ュ簱鐨勭増鏈涓嶄細寰堟晱鎰燂紝鍏鋒湁杈冨ソ鐨勫吋瀹規э紱緙虹偣鏄鐢熸垚鐨勭▼搴忔瘮杈冨ぇ銆備嬌鐢ㄥ姩鎬侀摼鎺ョ殑濂藉勬槸錛岀敓鎴愮殑紼嬪簭姣旇緝灝忥紝鍗犵敤杈冨皯鐨勫唴瀛樸倈cca.o-oa紼嬪簭榪愯岋細./ahello緙栬緫鏈孌礕CC緙栬瘧綆鍗曚緥瀛愮紪鍐欏備笅浠g爜錛#includestdio.h>intmain(){printf("hello,world!n");}鎵ц屾儏鍐靛備笅錛歡cc-Ehello.c-ohello.igcc-Shello.i-ohello.sgcc-chello.s-ohello.ogcchello.c-ohello./hellohello,world!

Linux涓媑cc緙栬瘧鎻愮ず閿欒銆傚湪鍑芥暟_start涓璵ain鏈瀹氫箟鐨勫紩鐢錛

浣犳槸涓嶆槸鍦ㄧ紪璇戦潤鎬佸簱鎴栬呭姩鎬佸簱錛熶篃灝辨槸娌℃湁main鍑芥暟銆

濡傛灉鏄錛屽啀鍙傝冧竴涓嬩笅杈圭殑鎻愮ず銆-c鍙傛暟琛ㄧず灝嗘簮鏂囦歡緙栬瘧鎴恛bject(鐩鏍囨枃浠)銆傚嵆gcc-cfoo.c浼氱紪璇戞垚foo.ogcc涓嶅姞鍙傛暟鏃朵細緙栬瘧涓斿皾璇曢摼鎺ユ垚鍙鎵ц屾枃浠訛紝鐒惰宖oo.c鐨勪唬鐮佷腑娌℃湁main鍑芥暟鐨勫畾涔夛紝鎵浠ユ渶緇堟棤娉曟垚鍔熼摼鎺ワ紝鏁呮姤閿欍

鍦╨inux涓錛屾庝箞鐢╣cc緙栬瘧鏂囦歡錛

緙栬瘧鏂規硶錛氭牸寮廹cc甯哥敤鐨勯夐」鏈綆鍗曠殑鏄:gcchello.c榛樿ょ殑鎯呭喌涓嬪皢鐢熸垚a.out鐨勫彲鎵ц屾ф枃浠訛紝鍙闇瑕佸湪緇堢涓婅緭鍏./a.out灝卞彲浠ョ湅鍒版墽琛岀殑緇撴灉錛屽傛灉浣犳兂鎸囧畾鐢熸垚鐩鏍囨枃浠剁殑鍚嶅瓧閭d箞浣犲彲浠ュ姞涓-o閫夐」,鍛戒護濡備笅:gcc-ohellohello.c鍛戒護錛歡cc-chellohello.c

鎵╁睍璧勬枡錛

gcc鍛戒護鐨勫熀鏈鐢ㄦ硶gcc鍏朵腑錛宖ilenames涓烘枃浠跺悕錛沷ptions涓虹紪璇戦夐」銆傚綋涓嶄嬌鐢ㄤ換浣曠紪璇戦夐」緙栬瘧hello.c鏃訛紝gcc灝嗕細鑷鍔ㄧ紪璇戜駭鐢熶竴涓猘.out鐨勫彲鎵ц屾枃浠訛細#lshello.c#gcchello.c#lsa.outhello.c鎵ц岋細#./a.outHello,World!浣跨敤-o緙栬瘧閫夋嫨錛屽彲浠ヤ負緙栬瘧鍚庣殑鏂囦歡鎸囧畾涓涓鍚嶅瓧錛#lsa.outhello.c#gcchello.c-ohello#lsa.outhellohello.c鎵ц岋細#./helloHello,World!娉ㄦ剰錛氫嬌鐢-o閫夐」鏃訛紝-o鍚庨潰蹇呴』璺熶竴涓鏂囦歡鍚嶏紝鍗籌細-ooutfile銆備負浜嗕究浜庢弿榪板悗闈㈢殑閫夐」錛屽垹闄hello鍜宎.out鍙鎵ц屾枃浠躲

arm-linux-gcc-3.4.5-glibc-2.3.6鏄浠涔堟剰鎬濓紵

鏄涓涓浜ゅ弶緙栬瘧杞浠躲備負浠涔堝繀欏昏佸畨瑁呭憿錛

鍥犱負鎴戜滑緙栧啓C璇璦鏄鍦ㄦ垜浠鑷宸辯殑PC涓妉inux鎿嶄綔緋葷粺涓嬪埄鐢℅CC緙栧啓鐨勶紝鑰屾垜浠鐨勫簲鐢ㄧ▼搴忔渶緇堟槸瑕佽呰澆鍒癆RM鑺鐗囦笂錛屾墍浠ヨ繖涓闂撮渶瑕佽漿鎹銆傚氨鐢ㄧ殑arm-linux-gcc鏉ョ紪璇戠敓鎴愮洰鏍囨枃浠躲

濡傛灉鍙鏄鐢╣cc鉶界劧鍦ㄤ釜浜篜C緙栬瘧姝g『錛屼絾鏄涓嬭澆鍒扮洰鏍囪姱鐗囧嵈鏄閿欒鐨勶紝鍘熷洜灝卞湪榪愯岀殑鐜澧冧笉涓鏍楓

⑶ C語言編譯.o時提示undefined reference to `main'怎麼辦

一般是缺少相應的頭文件,新建項目時 選擇console application,不要選MFC的那種項目。

主函數應該寫成int main(),你寫成mian了。

⑷ gcc -g -o -c分別是什麼意思

-c和-o都是gcc編譯器的可選參數。

-c表示只編譯(compile)源文件但不鏈接,會把.c或.cc的c源程序編譯成目標文件,一般是.o文件。-o用於指定輸出(out)文件名。不用-o的話,一般會在當前文件夾下生成默認的a.out文件作為可執行程序。

例如:

gcc -c test.c將生成test.o的目標文件

gcc -o app test.c將生成可執行程序app

gcc -c a.c -o a.o表示把源文件a.c編譯成指定文件名a.o的中間目標文件(其實在這里,把-o a.o省掉,效果是一樣的,因為中間文件默認與源文件同名,只是後綴變化)。

1、如果GCC不帶-C參數,編譯一個源代碼文件(test.c)。那麼會自動將編譯和鏈接一步完成,並生成可執行文件。可執行文件可以有-o參數指定(test.o)

2、如果是多個文件,則需要先編譯成中間目標文件(一般是.o文件),在鏈接成可執行文件,一般習慣目標文件都是以.o後綴,也沒有硬性規定可執行文件不能用.o文件。

(4)g編譯o文件擴展閱讀:

gcc:GNU編譯器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go語言的前端,也包括了這些語言的庫(如libstdc++、libgcj等等)。GCC的初衷是為GNU操作系統專門編寫的一款編譯器。GNU系統是徹底的自由軟體。此處,「自由」的含義是它尊重用戶的自由。

基本用法:

-o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預設的可執行文件a.out。

-O,對程序進行優化編譯、鏈接,採用這個選項,整個源代碼會在編譯、鏈接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、鏈接的速度就相應地要慢一些。

閱讀全文

與g編譯o文件相關的資料

熱點內容
一畝田app文字如何調整大小 瀏覽:740
聽電影解說可以放鬆解壓 瀏覽:516
未來之役為什麼顯示無法連接伺服器 瀏覽:801
c51單片機顯示是鏡像怎麼回事 瀏覽:168
雲伺服器申請注冊 瀏覽:670
課桌app里ppt怎麼播放 瀏覽:538
分步成本計演算法 瀏覽:520
車機默認桌面文件夾 瀏覽:916
php工作日計算 瀏覽:49
linuxalpha 瀏覽:46
如何用土豆製作伺服器 瀏覽:835
如何在app更改繳稅資料 瀏覽:421
安卓手柄能用什麼模擬器 瀏覽:19
王的命令二季 瀏覽:294
ping命令攻擊 瀏覽:185
內網怎麼連不上web伺服器 瀏覽:820
php輸出int 瀏覽:221
phpmall 瀏覽:460
有linux遠程伺服器如何部署 瀏覽:35
斗破蒼穹源碼搭建 瀏覽:507