linux編譯上百個c文件
『壹』 linuxcpp鏂囦歡濡備綍緙栬瘧榪愯宭inux.cpp
linux涓嬪備綍緇熻′竴涓鐩褰曚笅鐨勬枃浠朵釜鏁頒互鍙婁唬鐮佹昏屾暟鐨勫懡浠わ紵
鐭ラ亾鎸囧畾鍚庣紑鍚嶇殑鏂囦歡鎬諱釜鏁板懡浠わ細find.-name*.cpp|wc-l鐭ラ亾涓涓鐩褰曚笅浠g爜鎬昏屾暟浠ュ強鍗曚釜鏂囦歡琛屾暟錛歠ind.-name*.h|xargswc-llinux緇熻℃枃浠跺す涓鏂囦歡鏁扮洰絎涓縐嶆柟娉曪細ls-l|grep鈥淾-鈥潀wc-lls-l闀垮垪琛ㄨ緭鍑鴻ョ洰褰曚笅鏂囦歡淇℃伅(娉ㄦ剰榪欓噷鐨勬枃浠訛紝涓嶅悓浜庝竴鑸鐨勬枃浠訛紝鍙鑳芥槸鐩褰曘侀摼鎺ャ佽懼囨枃浠剁瓑)銆
濡傛灉ls-lR|grep鈥淾-鈥潀wc-l鍒欏彲浠ヨ繛瀛愮洰褰曚笅鐨勬枃浠朵竴璧風粺璁°
grep^-榪欓噷灝嗛暱鍒楄〃杈撳嚭淇℃伅榪囨護涓閮ㄥ垎錛屽彧淇濈暀涓鑸鏂囦歡錛屽傛灉鍙淇濈暀鐩褰曞氨鏄痎dwc-l緇熻¤緭鍑轟俊鎮鐨勮屾暟錛屽洜涓哄凡緇忚繃婊ゅ緱鍙鍓╀竴鑸鏂囦歡浜嗭紝鎵浠ョ粺璁$粨鏋滃氨鏄涓鑸鏂囦歡淇℃伅鐨勮屾暟錛屽張鐢變簬涓琛屼俊鎮瀵瑰簲涓涓鏂囦歡錛屾墍浠ヤ篃灝辨槸鏂囦歡鐨勪釜鏁般
絎浜岀嶆柟娉曪細find./-typef|wc-l鐢變簬榛樿find浼氬幓瀛愮洰褰曟煡鎵撅紝濡傛灉鍙鎯蟲煡鎵懼綋鍓嶇洰褰曠殑鏂囦歡鐢ㄩ渶瑕佽存槑鐨勬槸絎浜岀嶆柟娉曚細姣旂涓縐嶆柟娉曞揩寰堝氾紝灝ゅ叾鏄涔熺粺璁″瓙鐩褰曟椂銆
璇鋒暀錛氭庢牱璁劇疆鍏ㄥ矓鍙橀噺錛岃╁氫釜.cpp璋冪敤(Linux錛
鍦↙inux涓濡傛灉test1.cpp鍜宼est2.cpp鍒嗗睘涓や釜榪涚▼錛岀敤鍏ㄥ矓鍙橀噺閫氳鏄涓嶈岀殑鑻ュ垎灞炰袱涓綰跨▼錛屽彲浠ョ敤鍏ㄥ矓鍙橀噺閫氳,浣嗘敞鎰忓湪鏀瑰彉鍏跺兼椂鐢∕utex
linux涓.h鍜.hpp鐨勫尯鍒錛
.hpp錛屾湰璐ㄥ氨鏄灝.cpp鐨勫疄鐜頒唬鐮佹販鍏.h澶存枃浠跺綋涓錛屽畾涔変笌瀹炵幇閮藉寘鍚鍦ㄥ悓涓鏂囦歡錛屽垯璇ョ被鐨勮皟鐢ㄨ呭彧闇瑕乮nclude璇.hpp鏂囦歡鍗沖彲錛屾棤闇鍐嶅皢cpp鍔犲叆鍒皃roject涓榪涜岀紪璇戙
鑰屽疄鐜頒唬鐮佸皢鐩存帴緙栬瘧鍒拌皟鐢ㄨ呯殑obj鏂囦歡涓錛屼笉鍐嶇敓鎴愬崟鐙鐨刼bj錛岄噰鐢╤pp灝嗗ぇ騫呭害鍑忓皯璋冪敤project涓鐨刢pp鏂囦歡鏁頒笌緙栬瘧嬈℃暟錛屼篃涓嶇敤鍐嶅彂甯僱ib涓巇ll鏂囦歡錛屽洜姝ら潪甯擱傚悎鐢ㄦ潵緙栧啓鍏鐢ㄧ殑寮婧愬簱銆
鐢變簬.hpp鏈璐ㄤ笂鏄浣滀負.h琚璋冪敤鑰卛nclude鐨勶紝鎵浠ュ綋hpp鏂囦歡涓瀛樺湪鍏ㄥ矓瀵硅薄鎴栬呭叏灞鍑芥暟錛岃岃hpp琚澶氫釜璋冪敤鑰卛nclude鏃訛紝灝嗗湪閾炬帴鏃跺艱嚧絎﹀彿閲嶅畾涔夐敊璇銆
瑕侀伩鍏嶈繖縐嶆儏鍐碉紝闇瑕佸幓闄ゅ叏灞瀵硅薄錛屽皢鍏ㄥ矓鍑芥暟灝佽呬負綾葷殑闈欐佹柟娉曘
濡備綍鍦╨inux涓閰嶇疆opengl錛
鍓嶆彁鏄錛1.閰嶇疆濂戒簡Ubuntu涓嬬殑c++鐜澧冿紝gcc浠ュ強g++鍙鐢ㄣ2.浣跨敤eclipseforc+鍋歄penGL寮鍙戞ラや竴錛氬湪ubuntu緇堢涓嬭繍琛屼互涓嬪懡浠わ紝瀹夎卭pengl鎵闇瑕佺殑搴撴枃浠$sudoapt-getinstallbuild-essential$sudoapt-getinstallfreeglut3-dev姝ラや簩錛氳繍琛屼竴涓媜pengl瀹炰緥錛屾祴璇曢厤緗鐨勭幆澧冩槸鍚﹀畨瑁呮垚鍔熷湪eclipse涓嬫柊寤轟竴涓宸ョ▼鏂囦歡錛屽亣璁炬垜浠鍛藉悕涓篢est錛屽湪宸ョ▼Test閲岄潰鏂板緩涓涓狢++婧愪唬鐮佹枃浠訛紝榪欓噷鎴戜滑鎶婂畠鍛藉悕涓簃ain.cpp錛屽湪main.cpp鏂囦歡涓鎵撳叆涓涓嬩唬鐮
『貳』 LInux 如何使用GCC編譯器將一個文件夾下的100個.o文件打包成一個靜態庫文件(.a)
你已經用gcc編譯出目標文件了,用ar工具打包成.a文件就行了啊,示例:
如上圖,假設我有test1.c,test2.c兩個源文件,先使用gcc -c *.c將源文件編譯成目標文件,可以看到,生成了test1.o,test2.o兩個目標文件,然後,使用ar命令:ar crv libtest.a *.o將該目錄下的所有目標文件打包生成了libtest.a文件。這樣,你在編譯的時候就可以直接使用這個靜態庫了。
『叄』 linux中如何用gcc編譯用vi寫的c文件
方法/步驟
1、進入linux系統,創建C文件「vim test.c」同時進入vim編輯界面也可以利用指令「touch test.c」創建後,然後「vim test.c」進入vim編輯界面。
『肆』 Linux系統下使用cmake編譯文件
在Linux環境下,使用cmake作為C++工程管理工具能大幅提高項目編譯效率。當項目規模較大,包含多個文件夾與源文件時,手動使用g++指令逐個編譯變得繁瑣且容易出錯。cmake提供了一套靈活且統一的編譯流程,幫助開發者高效地構建和管理C++項目。
以一個簡單的C++程序為例,首先在Linux系統根目錄創建一個名為cppSpace的文件夾,並在其中新建一個HelloWorld.cpp文件。
緊接著,在cppSpace文件夾內創建一個名為CMakeLists.txt的文件,這是cmake的關鍵配置文件,指導cmake對cppSpace文件夾下的文件進行處理。
打開CMakeLists.txt文件,使用cmake語法編寫配置內容,該文件主要用於指定項目構建規則、依賴庫以及生成編譯所需的各種文件。
在終端中,切換至cppSpace文件夾並運行cmake命令,該指令會生成MakeFile文件,這是cmake自動生成的編譯腳本。
接著,使用make命令對工程進行編譯,最終在終端中執行程序名(如:./Helloworld)以運行程序。
相較於直接使用g++指令逐個編譯程序與源文件,使用cmake能夠簡化編譯流程,只需維護CMakeLists.txt文件即可。若新增可執行文件,只需在CMakeLists.txt中添加「add_executable」命令,無需修改其他步驟。
編譯過程中,cmake會在cppSpace文件夾內生成中間文件,這些文件在發布代碼時需清除。為簡化此步驟,建議創建一個中間目錄專門存放中間文件,並在編譯成功後刪除該目錄。通常,重新運行cmake指令後,所有編譯產生的文件會移動至中間目錄(如:build),而終端中無需此目錄,只需在終端中切換到build目錄即可運行程序。
『伍』 linux緙栬瘧c璇璦鍛戒護linux緙栬瘧c璇璦
鎬庝箞鍦╨inux涓緙栧啓c璇璦紼嬪簭錛
鍏堝湪緇堢涓杈撳叆vimtest.c鍥炶濺榪涘叆vim緙栬緫鍣錛屽啀鎸変竴涓媋閿錛岃繘鍏ョ紪杈戠姸鎬侊紝鐒跺悗杈撳叆濡備笅C璇璦璇鍙ワ細
#includestdio.h>intmain(){printf(helloworld!n);}鍒版わ紝鎸塭sc閿閫鍑虹紪杈戠姸鎬侊紝鍐嶈緭鍏ヤ竴涓鍐掑彿(shift+鍐掑彿鍒嗗彿閭d釜閿)錛岀揣璺熺潃杈撳叆wq錛屽嵆杈撳叆:wq鎸夊洖杞︼紝鍗蟲帹鍑簐im緙栬緫鍣ㄥ洖鍒扮粓絝鍛戒護紿楀彛錛堢被浼紉p鐨勫懡浠ゆ彁紺虹︼級錛屼箣鍚庤緭鍏gcctest.c錛岃繖姝ユ槸緙栬瘧./a.out錛岃繖鏄鎵ц岋紝灝嗕細杈撳嚭helloworld錛佸埌姝ょ粨鏉燂紝鍓嶆彁鏄浣犲凡緇忓畨瑁単cc
DEVC++鍜孷C++緙栬瘧C璇璦鐨勫尯鍒錛
Devc++鍜孷isualc++鏄涓や釜涓嶅悓鐨勭紪紼嬮泦鎴愮幆澧冭屽凡銆侰++鏄涓縐嶈璦錛屽畠鏄鏈夋爣鍑嗙殑銆俈isualC++鐨勪功璁茬殑涓鑸閮芥槸絎﹀悎鏍囧噯鐨勩備綘璁ょ湡瀛︿笉浼氭湁閿欍
DevC++緙栬瘧鍣ㄦ槸寮婧愮殑錛屽畠浣跨敤MingW32/GCC緙栬瘧鍣錛岄伒寰狢/C++鏍囧噯銆傚疄闄呬笂鐩鍓嶇殑DEVCPP鐨勫簲鐢ㄥ苟闈炲俈C涓鏍峰箍娉涗絾瀹冩槸鐩鍓嶄俊鎮瀛︾珵璧涗嬌鐢ㄧ殑C璇璦緙栬瘧鍣錛坓cc錛夊叧浜庝笓闂ㄥ︿範DEVCPP鐨勪功綾嶅熀鏈娌℃湁澶ч儴鍒嗕俊鎮瀛︾珵璧涗功綾嶉兘鏄銆婃暟鎹緇撴瀯銆嬩笌銆婄畻娉曘嬪苟娌℃湁鏄庣『鎸囧畾浣跨敤鐨勭紪璇戝櫒鑰屽湪絝炶禌涓璂EVCPP琚騫挎硾搴旂敤(鍙浠ュ湪LINUX鐜澧冧笅浣跨敤)
VisualC++鏄寰杞寮鍙戠殑windows涓嬬殑鍙瑙嗗寲C++緙栬瘧鍣ㄣ
DEVC++浣跨敤欏葷煡錛氬傛灉浣犲厛鍓嶇敤榪嘥C榪欎釜緙栬瘧鍣錛屼嬌鐢―EVC++緙栧啓紼嬪簭榪愯屽悗紿楀彛灝變細闂涓涓嬪氨娌℃湁浜嗭紝瑕佹兂鐪嬪埌榪愯屽緱鍒扮殑緇撴灉錛屽氨蹇呴』娉ㄦ剰濡備笅浜嬮」錛
1.鍦ㄧ▼搴忕殑鏈鍚庯紙鍦╮eturn璇鍙ュ墠錛夊姞getch();(鍙閫傜敤浜嶤紼嬪簭)
2.鍦ㄧ▼搴忕殑鏈鍚庯紙鍦╮eturn璇鍙ュ墠錛夊姞getchar();(閫傜敤浜嶤/C++)
3.鍦ㄧ▼搴忕殑鏈鍚庯紙鍦╮eturn璇鍙ュ墠錛夊姞system("pause")璇鍙ワ紝浣跨▼搴忚繍琛屽悗鏆傚仠.(閫傜敤浜嶤/C++)
濡傛灉璋冭瘯涓嶆垚鍔燂紝涓嶆柇鍦板嚭鐜板伐紼嬫湭緙栬瘧錛岃峰湪宸ュ叿-->緙栬瘧閫夐」-->緙栬瘧鏃跺姞鍏ヤ互涓嬪懡浠わ紙鎵撳嬀錛夊姞鍏-g
DEVC++鐨勬墿灞曞悕錛
涓鑸鏈変袱縐嶅艦寮忥細*.c鍜*.cpp
.c鏄疌璇璦鐨勬枃浠舵墿灞曞悕錛.cpp鏄痗++鐨勬枃浠舵墿灞曞悕銆
涓よ呮病鏈夊緢澶у尯鍒錛屽氨鍍忎綘瀛︿範浜嗚嫳璇錛屼絾鏄緹庡浗鍜岃嫳鍥界殑鑻辮鏈夊皬灝忎笉鍚屼竴鏍鳳紝
linux濡備綍緙栬瘧榪愯宼est.c錛
鎴戠殑錛歡cc-ctest.c-oa.out緙栬瘧
./a.out榪愯
cmd鑳借繍琛宑璇璦鍚楋紵
鑳藉熻繍琛岋紝灝辨槸闇瑕佷笅杞戒竴涓狢/C++緙栬瘧鍣錛岀劧鍚庨厤緗涓涓嬬幆澧冨彉閲忥紝涔嬪悗灝辮兘鍦╟md紿楀彛涓緙栬瘧榪愯孋紼嬪簭浜嗭紝鏁翠釜榪囩▼鍏跺疄鍜孡inux鐜澧冧笅緙栬瘧榪愯孋璇璦紼嬪簭宸涓嶅氥傚綋鐒訛紝鍦–MD紿楀彛緙栬瘧銆佽繍琛岀▼搴忔槸涓縐嶆瘮杈冭佺殑鏂規硶浜嗭紝鐜板備粖鏈夊緢澶氱殑IDE鍙浠ヤ緵閫夋嫨銆
鎬庝箞鐢ㄦ爲鑾撴淳緙栬瘧C璇璦紼嬪簭錛
RaspberryPi(涓鏂囧悕涓衡滄爲鑾撴淳鈥,綆鍐欎負RPi錛屾垨鑰匯asPi/RPi)鏄涓哄︾敓璁$畻鏈虹紪紼嬫暀鑲茶岃捐★紝鍙鏈変俊鐢ㄥ崱澶у皬鐨勫崱鐗囧紡鐢佃剳錛屽叾緋葷粺鍩轟簬Linux銆傝嚜闂涓栦互鏉ワ紝鍙椾紬澶氳$畻鏈哄彂鐑у弸鍜屽壋瀹㈢殑榪芥崸錛屾浘緇忎竴鈥滄淳鈥濋毦奼傘傚埆鐪嬪叾澶栬〃鈥滃▏灝忊濓紝鍐呪滃績鈥濆嵈寰堝己澶э紝瑙嗛戙侀煶棰戠瓑鍔熻兘閫氶氱殕鏈夛紝鍙璋撴槸鈥滈夯闆鉶藉皬錛屼簲鑴忎勘鍏ㄢ濄傛爲鑾撴淳瀹氫綅浜庡︿範銆傚彲浠ュ︽搷浣滅郴緇燂紝緙栫▼錛屼篃鍙浠ュ︿範宓屽叆緙栫▼錛屽伐涓氭帶鍒訛紝浜哄伐鏅鴻兘絳夌瓑銆傚畠姣斿叾瀹冪殑鍑犳炬瘮濡俛rio瑕佸叏闈浜涖傚綋鐒跺湪鏌愪簺鏂歸潰涔熷急浜涖傚浗澶栨妸鏍戣帗媧劇殑鍔熻兘鍙戞尌宸涓嶅氬埌鏋佽嚧銆傚嚑涔庢墍鏈夌殑棰嗗煙閮芥湁鏍戣帗媧劇殑韜褰便備粠騫惰岃$畻錛屽埌鏈哄櫒浜猴紝鍒3D鎵撳嵃錛屾帰緔㈠お絀猴紝瀹跺涵闃茬洍錛岃礬鐢卞櫒錛孭AD閮芥湁銆傚浗鍐呬笌鍥藉栫殑鐢ㄦ硶鍩烘湰鐩稿悓銆傚彧鏄鍥戒漢鏇村湪浜庡跺涵鐢ㄩ斻傞兘鏄浜涘姩鎵嬭兘鍔涘己鐨勪漢鐜╃殑灝忕帺鍏楓傗滄爲鑾撴淳鈥濈殑緋葷粺鏄鍩轟簬Linux銆傚洜姝ゆ爲鑾撴淳閲岀殑緙栫▼瀹屽叏鍜孡inux鐩稿悓錛屼嬌鐢↙inux涓嬬殑緙栬瘧鍣ㄧ紪璇戠▼搴忓苟榪愯屻傛爲鑾撴淳涓嶈兘榪涜寃indows涓嬬殑緙栫▼銆備緥紼嬶細//鍦╤ome/pi/鏂囦歡澶逛笅寤虹珛涓涓
hello.c
鏂囦歡錛岃緭鍏ヤ互涓嬪唴瀹#include-ohello瀹炵幇瀵hello.c
鐨勭紪璇戝拰榪炴帴//./hello鎵ц岀敓鎴愮殑鍙鎵ц屾枃浠秇ello『陸』 c語言(gcc)如何編譯多個文件
在C語言編程中,使用GCC編譯多個文件時,首先需要了解基本原理和方法。這通常涉及手動編寫Makefile,以管理編譯過程。對於規模較小的項目而言,這種方法是可行的。然而,當項目變得復雜或規模擴大時,使用Makefile可能會變得復雜且不易維護。
一種替代方案是使用集成開發環境(IDE),它能提供編譯和運行代碼的便利性,盡管這需要桌面環境的支持。在Linux中,由於可能缺乏桌面環境,這種方案可能並不總是可行。
為了解決大型項目編譯的復雜性問題,可以採用高級解決方案,如automake家族的工具。許多開源項目使用這些工具來生成Makefile,使得編譯過程更加簡化。通常,這些工具會在第一步調用`./configure`,以按照指定的規則生成最終可運行文件。
使用automake家族的工具後,編譯和安裝步驟變得相對簡單,只需要編寫一個`Makefile.am`文件,列出需要編譯的文件即可。這種自動化流程極大地簡化了編譯過程,使得項目管理變得更加高效。
『柒』 如何用GCC在linux下編譯C語言程序
在Linux下面,如果要編譯一個C語言源程序,我們要使用GNU的gcc編譯器,假設我們有下面一個非常簡單的源程序(hello.c):
int main(int argc,char **argv)
{
printf("Hello Linux
");
}
要編譯這個程序,我們只要在命令行下執行:
gcc -o hello hello.c
gcc 編譯器就會為我們生成一個hello的可執行文件.執行./hello就可以看到程
序的輸出結果了