資源描述:
《精通unix下c語言編程與項目實踐》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、第一篇:起步篇千里之行,始于足下。第一章UNIX初步UNIX自1969年誕生以來,已經(jīng)發(fā)展為SystemIII&V、BSD和Linux三大分支。UniX通過shell與用戶交互,它是用戶與系統(tǒng)間的界面。使用好shell對于學(xué)習(xí)使用UNIX來說是必須的。不需要你記住所有的命令,但基礎(chǔ)的文件操作、目錄操作及系統(tǒng)命令等卻是必須的。Vi對于初學(xué)者是難點(diǎn),不過只要通過一段時間的練習(xí)就能習(xí)慣;而且你會很快發(fā)現(xiàn),它功能強(qiáng)大、更加靈活。這里不多說了:)第二章編程套件學(xué)習(xí)UNIX對于初學(xué)者有幾種選擇。一種就是最直接的,在本機(jī)上安裝UNIX系統(tǒng),不如
2、說Linux分支中的RedHat等;一種是在Windows環(huán)境下使用虛擬機(jī)方式安裝UNIX系統(tǒng);另一種則是使用網(wǎng)絡(luò)終端登錄到網(wǎng)絡(luò)環(huán)境中的某個UNIX系統(tǒng)中。如果你相對黑洞洞的UNIX字符界面更喜歡舒適美觀的Windows界面,那么推薦你選擇第三種方式。開發(fā)套件包括:編輯器UltraEdit、網(wǎng)絡(luò)終端SecureCRT或其他。編譯器就不用說了,自然是cc(gcc或xlc系列)。這是C語言開發(fā)必不可少的。其中要注意-I(加載頭文件路徑)、-L(加載庫文件路徑)及-D(宏定義)參數(shù)的使用。Make工具使用。如何編寫makefile是關(guān)鍵
3、。后面項目中使用時會詳細(xì)介紹。Gdb調(diào)試器。Gdb乃符號級調(diào)試工具,它控制程序的內(nèi)部執(zhí)行,利用斷點(diǎn)設(shè)置、單步運(yùn)行等手段,將程序的執(zhí)行過程逐步展示在調(diào)試者目前。這種調(diào)試方式在短代碼中可以發(fā)揮得很好。事實上,隨著軟件項目的擴(kuò)大化、復(fù)雜化和分布化,很少有程序員直接通過Gdb等工具調(diào)試;使用日志記錄調(diào)試方法比Gdb等調(diào)試工具更為便捷和廣泛。C工具:lint檢查源代碼是否正確,gprof分析程序時間消費(fèi)量,cflow生成C語言流程圖。第三章庫的使用庫分靜態(tài)庫和動態(tài)庫兩種。靜態(tài)庫的操作工具:ar命令。編寫及使用靜態(tài)庫(1)設(shè)計庫源碼pr1.c
4、和pr2.c[root@billstonemake_lib]#catpr1.cvoidprint1(){printf("Thisisthefirstlibsrc!");}[root@billstonemake_lib]#catpr2.cvoidprint2(){printf("Thisisthesecondsrclib!");}(2)編譯.c文件[bill@billstonemake_lib]$cc-O-cpr1.cpr2.c[bill@billstonemake_lib]$ls-lpr*.o-rw-rw-r--1bill
5、bill8044月1511:11pr1.o-rw-rw-r--1billbill8044月1511:11pr2.o(3)鏈接靜態(tài)庫為了在編譯程序中正確找到庫文件,靜態(tài)庫必須按照lib[name].a的規(guī)則命名,如下例中[name]=pr.[bill@billstonemake_lib]$ar-rsvlibpr.apr1.opr2.oa-pr1.oa-pr2.o[bill@billstonemake_lib]$ls-l*.a-rw-rw-r--1billbill18224月1511:12libpr.a[bill@billstonem
6、ake_lib]$ar-tlibpr.apr1.opr2.o(4)調(diào)用庫函數(shù)代碼main.c[bill@billstonemake_lib]$catmain.cintmain(){print1();print2();return0;}(5)編譯鏈接選項-L及-l參數(shù)放在后面.其中,-L加載庫文件路徑,-l指明庫文件名字.[bill@billstonemake_lib]$gcc-omainmain.c-L./-lpr[bill@billstonemake_lib]$ls-lmain*-rwxrwxr-x1billbill118054
7、月1511:17main-rw-rw-r--1billbill504月1511:15main.c(6)執(zhí)行目標(biāo)程序[bill@billstonemake_lib]$./mainThisisthefirstlibsrc!Thisisthesecondsrclib![bill@billstonemake_lib]$編寫動態(tài)庫(1)設(shè)計庫代碼[bill@billstonemake_lib]$catpr1.cintp=2;voidprint(){printf("Thisisthefirstdllsrc!");}[bill@billst
8、onemake_lib]$(2)生成動態(tài)庫[bill@billstonemake_lib]$gcc-O-fpic-shared-odl.sopr1.c[bill@billstonemake_lib]$ls-l*.so-rwxrwxr-x1billb