freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

linux開發(fā)基礎(chǔ)相關(guān)知識簡介(編輯修改稿)

2025-03-09 14:13 本頁面
 

【文章內(nèi)容簡介】 下定義 CFLAGS 變量: CFLAGS = g 運行 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 獲取幫助信息 ? 啟動 gdb后,可以在命令行上指定很多的選項。輸入: help 可以獲得 gdb的幫助信息。 ? 如果想要了解某個具體命令(比如 break)的幫助信息,在 gdb提示符下輸入下面的命令: break 屏幕上會顯示關(guān)于 break的幫助信息。從返回的信息可知, break是用于設(shè)置斷點的命令。 ? 另一個獲得 gdb幫助的方法是瀏覽 gdb的手冊頁。在 Linux Shell提示符輸入: man gdb 可以看到 man的手冊頁 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 gdb命令的分類 ? 在 gdb 提示符處鍵入 help,將列出命令的分類,主要的分類有: ? aliases:命令別名 ? breakpoints:斷點定義; ? data:數(shù)據(jù)查看; ? files:指定并查看文件; ? internals:維護命令; ? running:程序執(zhí)行; ? stack:調(diào)用棧查看; ? statu:狀態(tài)查看; ? tracepoints:跟蹤程序執(zhí)行。 ? 后跟命令的分類名,可獲得該類命令的詳細清單 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 基本 gdb命令( 1/2) ? file命令:裝入想要調(diào)試的可執(zhí)行文件。 ? cd命令:改變工作目錄。 ? pwd命令:返回當前工作目錄。 ? run命令:執(zhí)行當前被調(diào)試的程序。 ? kill命令:停止正在調(diào)試的應用程序。 ? list命令:列出正在調(diào)試的應用程序的源代碼。 ? break命令:設(shè)置斷點。 ? watch命令:設(shè)置監(jiān)視點,監(jiān)視表達式的變化。 ? awatch命令:設(shè)置讀寫監(jiān)視點。當要監(jiān)視的表達式被讀或?qū)憰r將應用程序掛起。它的語法與 watch命令相同。 ? rwatch命令:設(shè)置讀監(jiān)視點,當監(jiān)視表達式被讀時將程序掛起,等侍調(diào)試。此命令的語法與 watch相同。 ? next命令:執(zhí)行下一條源代碼,但是不進入函數(shù)內(nèi)部。也就是說,將一條函數(shù)調(diào)用作為一條語句執(zhí)行。執(zhí)行這個命令的前提是已經(jīng) run,開始了代碼的執(zhí)行。 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 基本 gdb命令( 2/2) ? step命令:執(zhí)行下一條源代碼,進入函數(shù)內(nèi)部。如果調(diào)用了某個函數(shù),會跳到函數(shù)所在的代碼中等候一步步執(zhí)行。執(zhí)行這個命令的前提是已經(jīng)用run開始執(zhí)行代碼。 ? display命令:在應用程序每次停止運行時顯示表達式的值。 ? info break命令:顯示當前斷點列表,包括每個斷點到達的次數(shù) ? 16) info files命令:顯示調(diào)試文件的信息。 ? 17) info func命令:顯示所有的函數(shù)名。 ? 18) info local命令:顯示當前函數(shù)的所有局部變量的信息。 ? 19) info prog命令:顯示調(diào)試程序的執(zhí)行狀態(tài)。 ? 20) print命令;顯示表達式的值。 ? 21) delete命令:刪除斷點。指定一個斷點號碼,則刪除指定斷點。不指定參數(shù)則刪除所有的斷點。 ? 22) Shell命令:執(zhí)行 Linux Shell命令。 ? 23) make命令:不退出 gdb而重新編譯生成可執(zhí)行文件。 ? 24) Quit命令:退出 gdb。 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 gdb 使用實例( 1/2) ? /* 一個有錯誤的 C 源程序 */ include include static char buff [256]。 static char* string。 int main () { printf (Please input a string: )。 gets (string)。 printf (\nYour string is: %s\n, string)。 } ? 上面這個程序非常簡單,其目的是接受用戶的輸入,然后將用戶的輸入打印出來。該程序使用了 一個未經(jīng)過初始化的字符串地址 string,因此,編譯并運行之后,將出現(xiàn) Segment Fault 錯誤: $ gcc o test g $ ./test Please input a string: asfd Segmentation fault (core dumped) 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 gdb 使用實例( 2/2) ? 為了查找該程序中出現(xiàn)的問題,我們利用 gdb,并按如下的步驟進行: ? 1.運行 gdb bugging 命令,裝入 bugging 可執(zhí)行文件; ? 2.執(zhí)行裝入的 bugging 命令; ? 3.使用 where 命令查看程序出錯的地方; ? 4.利用 list 命令查看調(diào)用 gets 函數(shù)附近的代碼; ? 5.唯一能夠?qū)е? gets 函數(shù)出錯的因素就是變量 string。用 print 命令查看 string 的值; ? 6.在 gdb 中,我們可以直接修改變量的值,只要將 string 取一個合法的指針值就可以了,為 此,我們在第 11 行處設(shè)置斷點; ? 7.程序重新運行到第 11 行處停止,這時,我們可以用 set variable 命令修改 string 的取值; ? 8.然后繼續(xù)運行,將看到正確的程序運行結(jié)果。 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 GNU make和 makefile ? GNU make概述 ? Makefile 的基本結(jié)構(gòu) ? Makefile中的變量 ? GNU make 的主要預定義變量 ? Makefile的隱含規(guī)則 ? make命令行選項 ? 使用 automake和 autoconf產(chǎn)生 Makefile 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 GNU make概述 ? 在大型的開發(fā)項目中,人們通常利用 make 工具來自動完成編譯工作。這些工作包括: ? 如果僅修改了某幾個源文件,則只重新編譯這幾個源文件; ? 如果某個頭文件被修改了,則重新編譯所有包含該頭文件的源文件。 ? 利用這種自動編譯可大大簡化開發(fā)工作,避免不必要的重新編譯。 ? 實際上, make 工具通過一個稱為 makefile 的文件來完成并自動維護編譯工作。 makefile 需要按照某種語法進行編寫,其中說明了如何編譯各個源文件并連接生成可執(zhí)行文件,并定義了源文件之間的依賴關(guān)系。 當修改了其中某個源文件時,如果其他源文件依賴于該文件,則也要重新編譯所有依賴該文件的源文件。 ? 默認情況下, GNU make 工具在當前工作目錄按如下順序搜索 makefile: ? GNUmakefile ? makefile ? Makefile 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 makefile舉例 ? 在 UNIX中,習慣使用 makefile 作為 makfile 文件。 ? Linux程序員使用第三種文件名 Makefile。因為第一個字母是大寫,通常被列在一個目錄的文件列表的最前面。 ? 如果要使用其他文件作為 makefile,則可利用類 似下面的 make 命令選項指定 makefile 文件: $ make f ? 例 1:一個簡單的 makefile prog: gcc o prog : gcc c I. o : gcc c 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 Makefile 的基本結(jié)構(gòu)( 1/2) ? Makefile是一個文本形式的數(shù)據(jù)庫文件,其中包含一些規(guī)則來告訴 make處理哪些文件以及如何處理這些文件。 ? 規(guī)則主要是描述哪些文件(稱為 target目標文件,不要和編譯時產(chǎn)生的目標文件相混淆)是從哪些別的文件(稱為 dependency依賴文件)中產(chǎn)生的,以及用什么命令( mand)來執(zhí)行這個過程。 ? 依靠這些信息, make會對磁盤上的文件進行檢查,如果目標文件的生成或被改動時的時間(稱為該文件時間戳)至少比它的一個依賴文件還舊的話, make就執(zhí)行相應的命令,以更新目標文件。 ? 目標文件不一定是最后的可執(zhí)行文件,可以是任何一個中間文件并可以作為其他目標文件的依賴文件。 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 Makefile 的基本結(jié)構(gòu)( 2/2) ? Makefile規(guī)則的一般形式如下: target: dependency dependency (tab)mand ? 一個 Makefile文件主要含有一系列的規(guī)則,每條規(guī)則包含以下內(nèi)容。 ? 一個目標( target),即 make最終需要創(chuàng)建的文件,如可執(zhí)行文件和目標文件;目標也可以是要執(zhí)行的動作,如“ clean”。 ? 一個或多個依賴文件( dependency)列表,通常是編譯目標文件所需要的其他文件。 ? 一系列命今 (mand),是 make執(zhí)行的動作,通常是把指定的相關(guān)文件編譯成目標文件的編譯命令,每個命令占一行,且每個命令行的起始字符必須為 TAB字符。 ? 除非特別指定,否則 make的工作目錄就是當前目錄。 target是需要創(chuàng)建的二進制文件或目標文件, dependency是在創(chuàng)建 target時需要用到的一個或多個文件的列表,命令序列是創(chuàng)建 target文件所需要執(zhí)行的步驟,比如編譯命令。 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 Makefile實例( 1/3) 以 開頭的為注釋行 test: gcc –o test : gcc –c –o : gcc –c –o clean: rm –f *.o ? 上面的 Makefile文件中共定義了四個目標: test、 、 clean。 ? 目標從每行的最左邊開始寫,后面跟一個冒號(:),如果有與這個目標有依賴性的其他目標或文件,把它們列在冒號后面,并以空格隔開。然后另起一行開始寫實現(xiàn)這個目標的一組命令。 ? 在 Makefile中,可使用續(xù)行號( \)將一個單獨的命令行延續(xù)成幾行。但要注意在續(xù)行號( \)后面不能跟任何字符(包括空格和鍵) 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 Makefile實例( 2/3) ? 一般情況下,調(diào)用 make命令可輸入: ? make target ? target是 Makefile文件中定義的目標之一,如果省略 target, make就將生成 Makefile文件中定義的第一個目標。 ? 對于上面 Makefile的例子,單獨的一個“ make”命令等價于: ? make test ? 因為 test是 Makefile文件中定義的第一個目標, make首先將其讀入,然后從第一行開始執(zhí)行,把第一個目標 test作為它的最終目標,所有后面的目標的更新都會影響到 test的更新。 ? 第一條規(guī)則說明只要文件 test的時間戳比文件 何一個舊,下一行的編譯命令將會被執(zhí)行。 博創(chuàng)科技 嵌入互動 169。 2023 博創(chuàng)科技 Makefile實例( 3/3) ? 但是,在檢查文件 , make會在下面的行中尋找以 ,在第三行中找到了關(guān)于 則,該文件的依賴文件是 、 。同樣, make會在后面的規(guī)則行中繼續(xù)查找這些依賴文件的規(guī)則,如果找不到,則開始檢查這些依賴文件的時間戳,如果這些文件中任何一個的時間戳比 ,make將執(zhí)行“ gcc –c –o ”命令,更新 。 ? 以同樣的方法,接下來對文件 ,依賴文件是 。當 make執(zhí)行完所有這些套嵌的規(guī)則后, make將處理最頂層的test規(guī)則。如果關(guān)于 ,至少其中一個 .o目標文件就會比 test新,那么就要執(zhí)行 test規(guī)則中的命令,因此 make去執(zhí)行 gcc命令將 test。 ? 在上面 Makefile的例子中,還定義了一個目標 clean,它是 Makefile中常用的一種專用目標,即刪除所有的目標模塊 博創(chuàng)科技
點擊復制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1