摘 要:文章先介紹了GCC編譯器相關(guān)內(nèi)容,包括GCC編譯程序和GCC編譯選項(xiàng),隨后介紹了GDB調(diào)試程序相關(guān)內(nèi)容,包括GDB具體操作和GDB基礎(chǔ)命令,最后介紹了C語言編寫中的注意事項(xiàng),希望能給相關(guān)人士提供有效參考。
關(guān)鍵詞:Linux操作系統(tǒng);C語言編譯;調(diào)試方法
引言:C語言擁有較強(qiáng)的表達(dá)能力、應(yīng)用范圍較廣、功能豐富,同時(shí)目標(biāo)程序的運(yùn)行效率相對(duì)較高,擁有良好的可移植性,不但擁有高級(jí)語言應(yīng)用優(yōu)勢(shì),同時(shí)還兼具低語言特征。為此C語言也是當(dāng)下推廣速度最快的計(jì)算機(jī)語言。
一、GCC編譯器
(一)GCC編譯程序
Linux OS系統(tǒng)中應(yīng)用的C編譯器主要是GCC編譯器,如果初步了解其他控制系統(tǒng)中的某種C編譯器,則便會(huì)快速掌握GCC操作。結(jié)合相關(guān)編輯軟件編制完成某一C語言源程序后,會(huì)直接進(jìn)入下面幾項(xiàng)環(huán)節(jié),分別是程序運(yùn)行、連接、開展編譯工作、程序輸入等。比如在設(shè)計(jì)C源程序的filel.c時(shí),通過編譯后可以或得filel.o的目標(biāo)文件,并和系統(tǒng)中的庫(kù)函數(shù)實(shí)施有效連接,最終獲得filel.out可執(zhí)行文件,并開始啟動(dòng)filel.out文件運(yùn)行。
GCC編譯器執(zhí)行命令的具體用法如下所示:
GCC[選項(xiàng)][文件名]
GCC編譯程序中如果不存在任何選項(xiàng)的條件下,便會(huì)自動(dòng)生成一種a.out可執(zhí)行文件,比如以下命令會(huì)在現(xiàn)有目錄下生成一種稱作a.out的文件,相關(guān)文件名為gcc filel.c。
如果想要改變系統(tǒng)默認(rèn)文件名a.out,在開展編譯工作中相關(guān)技術(shù)人員可以自主指定相應(yīng)的可執(zhí)行文件名,從而對(duì)系統(tǒng)自動(dòng)生成的a.out文件實(shí)施有效替換,比如可以把filel.c名字的C程序改編為filel.out名字的可執(zhí)行文件,并按照下方命令參考輸入:gcc-o filel.out filel.c。操作中需要注意應(yīng)用-0選項(xiàng)過程中,后面應(yīng)該緊跟一種文件名[1]。
(二)GCC編譯選項(xiàng)
GCC編譯選項(xiàng)多種多樣,其中僅有少部分會(huì)頻繁選用,除了相關(guān)選項(xiàng)之外,還包含各種不會(huì)經(jīng)常應(yīng)用的選項(xiàng),為此可以輸入man gcc,并查閱其應(yīng)用方法。除此之外,部分GCC選項(xiàng)內(nèi)還包含超出一個(gè)的字符,為此應(yīng)該針對(duì)各個(gè)選項(xiàng)指定相應(yīng)的連字符-,盡量不要在同一連字符后面陸續(xù)跟多個(gè)選項(xiàng)。比如-p、-g、-pg三種選項(xiàng)最終的執(zhí)行結(jié)完全不同,前者主要是剖析建立信息,隨后將相應(yīng)的調(diào)試信息添加到可執(zhí)行文件內(nèi),而后者是單純構(gòu)建剖析信息。
二、GDB調(diào)試程序
(一)GDB具體操作
Linux操作系統(tǒng)中設(shè)置有GDB調(diào)試器,該種裝置主要作用是調(diào)試C語言的程序工具,其中CDB提供的具體功能包括程序中可監(jiān)視的變量值,可以合理設(shè)置斷點(diǎn),從而方便在指定代碼的基礎(chǔ)上,讓程序停止運(yùn)行,并按照順序一行行落實(shí)具體程序。為了保證GDB的正常運(yùn)行,需要在進(jìn)行編譯的過程中,讓程序含有調(diào)試信息。調(diào)試信息中囊括了程序內(nèi)各種變量類型,同時(shí)還含有可執(zhí)行文件內(nèi)的地址映射,和機(jī)器碼互相關(guān)聯(lián)。
假如啟動(dòng)GDB調(diào)試器并運(yùn)行,則需要于命令行中輸入GDB,隨后按下回車鍵,便可以順利啟動(dòng)運(yùn)行GDB,在啟動(dòng)GDB后,顯示屏幕中還會(huì)展示出相應(yīng)的提示信息,最后一行主要是GDB提示符號(hào):(gdb)。
(二)GDB基礎(chǔ)命令
GDB能夠?yàn)槎喾N命令實(shí)現(xiàn)具體功能提供可靠支持。相關(guān)命令從原本的簡(jiǎn)單文件內(nèi)轉(zhuǎn)入允許檢查調(diào)用堆棧內(nèi)容當(dāng)中,下面介紹在GDB實(shí)施程序調(diào)試過程中經(jīng)常會(huì)應(yīng)用到的幾種命令:命令file主要功能是將即將調(diào)試對(duì)象可執(zhí)行文件裝入;kill命令的功能是將調(diào)試中的程序終止;list命令功能為將執(zhí)行文件中部分源代碼列出;next命令主要功能是執(zhí)行某行源代碼,但不會(huì)進(jìn)入到函數(shù)內(nèi)部;step命令的功能是按照某行源代碼執(zhí)行,但不會(huì)進(jìn)入函數(shù)內(nèi);run命令功能是按照當(dāng)下被調(diào)試程序執(zhí)行;quit命令的功能是從GDB中徹底退出;watch命令的具體功能是針對(duì)某一變量進(jìn)行全面監(jiān)控,不論其什么時(shí)候會(huì)被改變;break命令的主要功能是設(shè)計(jì)斷點(diǎn),保證當(dāng)程序在運(yùn)行到一定條件下可以被掛起;make命令功能是只要不從GDB內(nèi)退出,便可以重新生成執(zhí)行文件。通過將GDB-H輸入到命令行中,便可以獲得相關(guān)命令選項(xiàng)的列表說明[2]。
三、C語言編寫注意事項(xiàng)
Linux操作系統(tǒng)內(nèi)編寫C語言的過程中,需要注意下面幾種問題:
第一是和其他系統(tǒng)內(nèi)進(jìn)行C語言編寫程序相同,包括編輯、編譯、調(diào)試、運(yùn)行等步驟,調(diào)試方法也大致相同,比如夠能夠設(shè)計(jì)斷點(diǎn),單步執(zhí)行調(diào)試程序。第二是在DOS以及WINDOWS相關(guān)操作系統(tǒng)中,主要是應(yīng)用TUBRO C,但其屬于一種女匯集運(yùn)行、調(diào)試、編輯多種功能的編程環(huán)境,但在Linux操作系統(tǒng)操作系統(tǒng)中,應(yīng)該如同記DOS命令,把所有命令選項(xiàng)、應(yīng)用方法和參數(shù)全部記住。第三是C語言在各個(gè)操作系統(tǒng)里面都是.C的擴(kuò)展名,但執(zhí)行文件以及目標(biāo)文件相關(guān)擴(kuò)展名則大不相同,比如Windows以及DOS相關(guān)系統(tǒng)中的目標(biāo)文件全部是.obj,而相關(guān)執(zhí)行文件則是.exe。但在Linux操作系統(tǒng)以及UNIX系統(tǒng)內(nèi),目標(biāo)文件擴(kuò)展名是,o,而執(zhí)行文件的擴(kuò)展名則是.out,其中需要著重注意,不然便會(huì)導(dǎo)致系統(tǒng)無法準(zhǔn)確找出相關(guān)文件,最終出現(xiàn)錯(cuò)誤。
綜上所述,Linux操作系統(tǒng)是全世界范圍內(nèi)最為知名的自由免費(fèi)軟件,其自身便屬于一種可以和Windows相媲美的系統(tǒng),并在互聯(lián)網(wǎng)中發(fā)布出來,大部分人會(huì)將其下載下來并結(jié)合自身需求不斷完善其相關(guān)功能,將Linux打造成一種擁有廣泛發(fā)展前景、較為穩(wěn)定的操作系統(tǒng),該系統(tǒng)內(nèi)還包含多種C語言開發(fā)工具。
參考文獻(xiàn):
[1]楊炎熙.關(guān)于嵌入式Linux操作系統(tǒng)的開發(fā)及應(yīng)用的研究[J].數(shù)字通信世界,2019(11):156.
[2]菅華.深度挖掘配置核查與口令自動(dòng)化加固工具在實(shí)際工作中的應(yīng)用[J].信息通信,2019(09):100-103.
作者簡(jiǎn)介:
蔡雅慧(1996-),女,籍貫:海南;職稱和學(xué)歷:本科;研究方向或?qū)I(yè):計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)。