張延梅
摘要:Linux系統(tǒng)應(yīng)用的比較廣泛,其所屬的C語(yǔ)言具有諸多優(yōu)點(diǎn),如運(yùn)用設(shè)計(jì)比較方便、框架和運(yùn)算都比較豐富,同時(shí)也存在一些不足,如數(shù)據(jù)封面和安全性存在不足。文章對(duì)C語(yǔ)的優(yōu)點(diǎn)和不足進(jìn)行解析,在此基礎(chǔ)上探究Linux系統(tǒng)C語(yǔ)言的編程技巧,與同仁共勉。
關(guān)鍵詞:Linux系統(tǒng);C語(yǔ)言;穩(wěn)定性;調(diào)試;示例
中圖分類號(hào):TP311? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)28-0114-03
Linux系統(tǒng)是當(dāng)前較為流行的C語(yǔ)言操作系統(tǒng),使用免費(fèi)、運(yùn)用效率高成為大家青睞的這一系統(tǒng)的原因。作為計(jì)算機(jī)編制最主要的應(yīng)用語(yǔ)言,C語(yǔ)言適應(yīng)性能十分強(qiáng)大,它可以在眾多環(huán)境中進(jìn)行獨(dú)立的運(yùn)行,實(shí)現(xiàn)人機(jī)相互交流。C語(yǔ)言在Linux系統(tǒng)下進(jìn)行操作,使得二者的優(yōu)點(diǎn)發(fā)揮到的最大狀態(tài),下面結(jié)合工作實(shí)際,就 Linux 系統(tǒng)下C語(yǔ)言的編程技巧進(jìn)行探討,以期為編程人員提高工作效益提供參考。
1 Linux系統(tǒng)簡(jiǎn)要概述
Linux系統(tǒng)對(duì)網(wǎng)絡(luò)的充分運(yùn)用源自Unix 系統(tǒng)的特點(diǎn),其主要是圍繞網(wǎng)絡(luò)多用戶應(yīng)用進(jìn)行設(shè)計(jì),這樣的設(shè)計(jì)為該系統(tǒng)的穩(wěn)定性和多用戶進(jìn)行使用提供了強(qiáng)有力的支撐。Linux系統(tǒng)既可以完全支持以太網(wǎng)的協(xié)議,又可以為其他網(wǎng)的應(yīng)用提供條件保證。Linux系統(tǒng)有一個(gè)較為明顯的特點(diǎn),就是它可以將各個(gè)軟件和硬件按照各自的獨(dú)立性放在一個(gè)文件里面。Linux與Unix兩個(gè)系統(tǒng)的設(shè)計(jì)理念基本一致,都可以在服務(wù)器中充分的運(yùn)行,且具有較強(qiáng)的靈活性和便利性。運(yùn)用Linux系統(tǒng)進(jìn)行相應(yīng)的程序設(shè)定,可以較好地操作嵌入式系統(tǒng),并且對(duì)加強(qiáng)網(wǎng)絡(luò)安全進(jìn)行一定的設(shè)定,對(duì)計(jì)算機(jī)操作系統(tǒng)具有較好的保護(hù)功能,這也使得Linux系統(tǒng)成為其他系統(tǒng)的良好依靠,助力我們?cè)谏钪袕V泛、方便、快捷、穩(wěn)定的應(yīng)用。
2 C 語(yǔ)言具備的優(yōu)缺點(diǎn)
人類與計(jì)算機(jī)交互溝通的橋梁就是具有一定結(jié)構(gòu)性的C 語(yǔ)言,這種典型的數(shù)據(jù)結(jié)構(gòu)性語(yǔ)言與人類的思維形式具有極大的相似之處,同樣這一語(yǔ)言也是軟件設(shè)計(jì)性語(yǔ)言,它的框架結(jié)構(gòu)十分的清晰,所具有的高級(jí)語(yǔ)言特性使得C語(yǔ)言被廣泛地運(yùn)用于計(jì)算機(jī)編程。同時(shí),運(yùn)用 C 語(yǔ)言還可以對(duì)系統(tǒng)進(jìn)行語(yǔ)言設(shè)計(jì),對(duì)各類應(yīng)用程序進(jìn)行編寫,這樣就打破了依賴計(jì)算機(jī)來編寫應(yīng)用程序的情況。
2.1 C 語(yǔ)言所具有的優(yōu)點(diǎn)
C語(yǔ)言作為人與計(jì)算機(jī)溝通的媒介,其具有諸多優(yōu)點(diǎn)。
首先是靈活簡(jiǎn)便實(shí)用,語(yǔ)言豐富。機(jī)的交C 語(yǔ)言是借助小寫的字母來表示的,融合了32個(gè)詞匯和9個(gè)不同控制語(yǔ)言,程序編寫表示的較為隨意,這樣使得C語(yǔ)言運(yùn)用起來十分的緊湊、靈活、簡(jiǎn)潔,又較為方便。同時(shí),C語(yǔ)言的框架十分的豐富,其數(shù)據(jù)的類型有指針型、數(shù)字型、數(shù)組型等多種,這樣的框架結(jié)構(gòu)特性,極大地提升了C語(yǔ)言對(duì)煩瑣數(shù)據(jù)結(jié)構(gòu)的計(jì)算能力。運(yùn)算形式、符號(hào)多樣、豐富是C 語(yǔ)言的一大優(yōu)點(diǎn),具有強(qiáng)大的運(yùn)算能力是因?yàn)镃語(yǔ)言涉及三十四個(gè)運(yùn)算符,這也使得C語(yǔ)言可以將賦值、括號(hào)等轉(zhuǎn)化為程序語(yǔ)言。
其次是運(yùn)用中較少受約束限制。C語(yǔ)言在編程過程中運(yùn)用具有較強(qiáng)的適應(yīng)能力,編程人員在較強(qiáng)的類型語(yǔ)言運(yùn)用時(shí),C語(yǔ)言表現(xiàn)出了較強(qiáng)的適應(yīng)能力,可以較自由而輕松地進(jìn)行程序匯編。正是C語(yǔ)言所具有的高質(zhì)量代碼形成能力,使得其目標(biāo)代碼按照嚴(yán)格的執(zhí)行標(biāo)準(zhǔn)進(jìn)行,與匯編程序所形成的目標(biāo)代碼效率一般會(huì)在15%左右,從而更加有利于編程人員的工作運(yùn)用。
再次是移植操作和兼容性強(qiáng)。C語(yǔ)言不但具有高級(jí)語(yǔ)言的地址訪問和瀏覽,而且具有低級(jí)語(yǔ)言的硬件直接操作運(yùn)用,這就為操作對(duì)位、字節(jié)等內(nèi)容提供了良好的支撐。同時(shí),C語(yǔ)言兼容UNIX、DOS 等眾多操作系統(tǒng),還可以運(yùn)用于繪圖和數(shù)據(jù)處理,這樣良好的可植入性為C語(yǔ)言在不同的環(huán)境中進(jìn)行運(yùn)用提供了便利。
2.2 C語(yǔ)言存在的不足
C 語(yǔ)言雖然具有諸多優(yōu)點(diǎn),但在數(shù)據(jù)安全方面存在一些不足,需要編程人員在運(yùn)用中進(jìn)行克服。一方面的安全不足存在于封裝方面。與C++相比,C語(yǔ)言在封面上存在的不足,使得其安全性受到考驗(yàn),給編程運(yùn)用帶來了風(fēng)險(xiǎn)。另一方面安全不足,就是C語(yǔ)言的約限過于寬松,使得C語(yǔ)言缺乏嚴(yán)謹(jǐn)性,對(duì)于數(shù)組下標(biāo)越界的嚴(yán)格核查并不是很全面,同樣給其安全性帶來了考驗(yàn)。針對(duì)C 語(yǔ)言存在的安全方面的不足,在編程運(yùn)用的過程中,編程人員應(yīng)給予足夠的重視,采取一定的措施克服安全方面的不足。
3 Linux系統(tǒng)下C語(yǔ)言程序開發(fā)
基于Linux系統(tǒng)運(yùn)用C語(yǔ)言進(jìn)行程序編寫,編寫的環(huán)境主要有字符界面和圖形化集成兩類。其中,字符界面一般使用的是 Vi、vim或Emacs文本編輯器,再運(yùn)用gcc編譯器進(jìn)行源程序的編譯,如果發(fā)現(xiàn)所編程序有錯(cuò)誤時(shí),可以使用gdb調(diào)試器對(duì)程序進(jìn)行調(diào)試。若開發(fā)程序較大,則需要Makefile文件,從而達(dá)到自動(dòng)編譯程序,同時(shí)運(yùn)用 CVS 對(duì)所開發(fā)的項(xiàng)目進(jìn)行管理。例如,運(yùn)用Linux系統(tǒng)上的文本編輯軟件Vi編輯器C語(yǔ)言程序編寫:
在Linux系統(tǒng)的Shell下輸入vi sum.c然后回車就可以進(jìn)入 vi 編輯畫面,點(diǎn)擊字母“I”以插入的模式輸入以下程序:
上述代碼輸入完成后,點(diǎn)擊“ESC”鍵,這時(shí)由插入模式換成命令行模式,這時(shí)輸入:wq 命令,點(diǎn)擊回車即可以退出vi,并且保存sum.c文件。
4 Linux系統(tǒng)的計(jì)算機(jī)C語(yǔ)言編程技巧
C語(yǔ)言編程和運(yùn)用需要較強(qiáng)的計(jì)算機(jī)理論知識(shí)和實(shí)踐能力作為后盾,才能得心應(yīng)手地進(jìn)行工作。以Linux系統(tǒng)為支撐的計(jì)算機(jī)C語(yǔ)言編程,主要是基于一定的編程理論,對(duì)相關(guān)的事例進(jìn)行程序設(shè)計(jì),以模擬事例的方式進(jìn)行數(shù)據(jù)結(jié)構(gòu)的編輯規(guī)劃,通過最大限度地發(fā)揮C語(yǔ)言的功能,達(dá)到程序編輯設(shè)計(jì)的最合理化。
4.1 源程序編寫
Linux 系統(tǒng)下運(yùn)用C語(yǔ)言進(jìn)行編程,要用到GNU編譯器套件中的gcc編譯器進(jìn)行程序編輯。GNU能夠較好地按照用戶的指令進(jìn)行工作,gcc編譯器是GNU系統(tǒng)中的最主要部分,包括Linux系統(tǒng)在內(nèi)的大部分Unix系統(tǒng)均把gcc編譯器作為標(biāo)準(zhǔn)的編譯器進(jìn)行使用。在源程序編寫時(shí),以gcc編譯器技術(shù)為基礎(chǔ)開展工作,分別用—g來代表編程,用—o來代表文件名,用—c來代表代碼輸出,通過掌握這三點(diǎn)來全面運(yùn)用gcc開展源程序的編寫。例如,運(yùn)用gcc編譯器對(duì)下面的源程序進(jìn)行編程:
針對(duì)上面的源程序進(jìn)行程序編寫時(shí),使用gcc執(zhí)行相關(guān)任務(wù),輸寫“gcc一 0testtest.c”,這時(shí)gcc編譯器就可以自主地達(dá)成test可執(zhí)行文件的編寫,從而圓滿完成程序的編寫。
4.2 程序的調(diào)試
需要著重指出的是,Linux 系統(tǒng)下的C語(yǔ)言編程均需要多次調(diào)試,才能使所編寫的程序逐步完善符合要求。gdb調(diào)試軟件是Linux系統(tǒng)中的重要工具,它通過對(duì)程序中的變量值進(jìn)行監(jiān)視來達(dá)到調(diào)試的功能,這個(gè)強(qiáng)力調(diào)試器可以對(duì)C語(yǔ)言與C++程序進(jìn)行調(diào)試。運(yùn)用這個(gè)工具可以有效地將所編寫程序出現(xiàn)錯(cuò)誤的概率調(diào)試到最低。編程人員在調(diào)試所編寫的程序時(shí),需要明確數(shù)據(jù)的結(jié)構(gòu)與系統(tǒng)編程之間的關(guān)系,這樣形成了編程的具體思路。在進(jìn)行編程過程中如果遇到客觀存在的問題,可以依據(jù)確定的思路進(jìn)行調(diào)試解決。Gdb這一工具可以支持不同的命令,這樣就可以使用戶的編程發(fā)揮出不同的作用,它也與Unix Shell程序相互融通進(jìn)行支持,達(dá)到具有一樣的命令編輯特征。調(diào)試需要經(jīng)過多次,運(yùn)用強(qiáng)力調(diào)制器對(duì)所編的程序進(jìn)行微調(diào),同時(shí)通過深入探究產(chǎn)生錯(cuò)誤的影響因素,逐步達(dá)到結(jié)構(gòu)與內(nèi)存調(diào)試的合理化,進(jìn)而有效完成C語(yǔ)言的編程。
4.3 程序庫(kù)的創(chuàng)建
在Linux系統(tǒng)下進(jìn)行編程,需要?jiǎng)?chuàng)建程序庫(kù),不同的程序庫(kù)的創(chuàng)建,應(yīng)該實(shí)行相應(yīng)的方法。常見的,也是最主要的程序庫(kù)有動(dòng)態(tài)加載庫(kù)、共享庫(kù)、靜態(tài)庫(kù)等幾種。例如,創(chuàng)建共享庫(kù)就需要b.c、a.c方法,在同時(shí)把握上述三種程序庫(kù)的同時(shí),進(jìn)行共享庫(kù)的創(chuàng)建,達(dá)到最佳的創(chuàng)建效果。再如,動(dòng)態(tài)庫(kù)的創(chuàng)建,它的文件格式與共享庫(kù)沒有明顯的差異,用API來打開動(dòng)態(tài)庫(kù),處理相應(yīng)的錯(cuò)誤。分批次地放入DLL 里面的目標(biāo)文件,運(yùn)用gcc的-WI選項(xiàng)將sonsame參數(shù)傳遞給連接器。
編程總體的編譯和連接等相關(guān)規(guī)則由Makefile文件來進(jìn)行描述,make是Makefile文件下的命令工具。在Linux系統(tǒng)下,需要運(yùn)用GNU make來編輯管理工程,通過發(fā)揮makefile的優(yōu)勢(shì)來達(dá)成自動(dòng)化編譯,這樣可以有效提高編程的效益。實(shí)際編程序時(shí),編程人員需處理大量源程序,需要執(zhí)行 make 命令,通過選行編寫 makefile文件下的.makefile文件,其一般的格式是target:copenents.TAB rule,makefile有3個(gè)變量$@,$^,$<代表的意義為目標(biāo)文件,所有依賴文件與第一依賴文件。使用變量可將 Makefile 文件簡(jiǎn)化為#。
實(shí)際編程時(shí)因?yàn)楹茈y記憶龐大的函數(shù)數(shù)據(jù),所以C函數(shù)在Linux系統(tǒng)下C語(yǔ)言編程就運(yùn)用得較多。當(dāng)需要知道函數(shù)數(shù)據(jù)時(shí),可以向系統(tǒng)尋求幫助。具體操作為:在啟動(dòng)Linux系統(tǒng)后,應(yīng)該在界面現(xiàn)的提示符shell時(shí)輸入info來進(jìn)行求助。也可以在GUN的ernerces中輸入Esc-x,然后再加上 info,這種求助方法也是十分有效的。例如,需要f read 函數(shù)時(shí),可以執(zhí)行man f read,輸入后系統(tǒng)會(huì)輸出函數(shù)的詳細(xì)解釋,再如需要write 函數(shù)說明時(shí),我們可以執(zhí)行man fread 命令,用 man2 write.2來表示write函數(shù)。
Linux系統(tǒng)下運(yùn)用C語(yǔ)言進(jìn)行編程,需要編程人員具有結(jié)構(gòu)力學(xué)、高等函數(shù)等豐富的、廣闊的知識(shí),在實(shí)際編寫中能夠綜合運(yùn)用所掌握知識(shí),協(xié)同巧妙地進(jìn)行程序編寫,進(jìn)而充分發(fā)揮出C語(yǔ)言所具有的功能。
4.4 充分重視示例程序
C語(yǔ)言知識(shí)量龐雜,抽象不易全面的把握,初學(xué)者向?qū)I(yè)人員過渡的過程中,需要充分的重視示例程序。示例程序是經(jīng)過專業(yè)人員精心編寫的,通過示例將新知識(shí)理論與實(shí)踐經(jīng)驗(yàn)進(jìn)行融合,呈現(xiàn)在學(xué)習(xí)者面前的是完美的程序。對(duì)示例學(xué)習(xí)的有效方法是模仿,模仿示例進(jìn)要深入學(xué)習(xí)和理解其中的理論,對(duì)編程的數(shù)據(jù)結(jié)構(gòu)進(jìn)行分析,在腦海中形成編程的思路,逐步掌握C語(yǔ)言的各種格式、命令等。示例是成形的,實(shí)踐編寫過程中需要對(duì)錯(cuò)誤進(jìn)行分析和把握,這時(shí)可以請(qǐng)專業(yè)編程人員在一旁指導(dǎo)實(shí)踐編寫,對(duì)需要注意的事項(xiàng)和編寫的方式、方法進(jìn)行引導(dǎo),從而內(nèi)化為自己的經(jīng)驗(yàn)。
總之,Linux系統(tǒng)具有十分穩(wěn)定且易于操作使用的環(huán)境,在該系統(tǒng)下運(yùn)用C語(yǔ)言進(jìn)行編程,充分發(fā)揮C語(yǔ)言強(qiáng)大的功能,可以開發(fā)出適合人們生產(chǎn)和生活的應(yīng)用程序。加強(qiáng)C語(yǔ)言編程的學(xué)習(xí)和應(yīng)用,必須著力加強(qiáng)對(duì)理論的實(shí)踐,從而不斷提升C語(yǔ)言的編程技巧和水平。
參考文獻(xiàn):
[1] 農(nóng)媛彥.Linux系統(tǒng)下的計(jì)算機(jī)C語(yǔ)言編程技巧分析[J].數(shù)字通信世界,2018(7):102.
[2] 李俊玲.淺談Linux操作系統(tǒng)下的C程序開發(fā)[J].中國(guó)科技財(cái)富,2012(5):314.
[3] 朱鵬飛.對(duì)計(jì)算機(jī)C語(yǔ)言編輯程序技巧研究[J].電子技術(shù)與軟件工程,2015(18):251.
[4] 余勍,王捷.淺談C語(yǔ)言編程技巧在C語(yǔ)言學(xué)習(xí)中的應(yīng)用[J].信息通信,2013(7):108.
【通聯(lián)編輯:唐一東】