导航:首页 > 源码编译 > 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文件相关的资料

热点内容
淘宝租借服务器怎么样 浏览:370
狙击涨停副图指标源码 浏览:951
单片机转速传感器 浏览:692
如何开通收钱吧app官方网站 浏览:326
编程猫图形化设计 浏览:186
重置网络命令管理员 浏览:547
如何禁止app调用 浏览:8
android系统源码下载优化 浏览:613
五色量柱源码 浏览:934
云笔记隐藏文件夹 浏览:889
阿里轻云服务器宝塔 浏览:995
总统行政命令没有法律效力 浏览:368
一亩田app文字如何调整大小 浏览:740
听电影解说可以放松解压 浏览:516
未来之役为什么显示无法连接服务器 浏览:801
c51单片机显示是镜像怎么回事 浏览:168
云服务器申请注册 浏览:670
课桌app里ppt怎么播放 浏览:538
分步成本计算法 浏览:520
车机默认桌面文件夹 浏览:916