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

正文內(nèi)容

uclinux下應(yīng)用程序開發(fā)(完整版)

2025-06-30 11:59上一頁面

下一頁面
  

【正文】 其他文件作為 makefile, 則可利用類似下面的 make 命令選項指定 makefile 文件: $ make f makefilename 一個 makefile 主要含有一系列的規(guī)則 , 如下: 目標文件名 : 依賴文件名 (tab鍵 ) 命令 第一行稱之為規(guī)則,第二行是執(zhí)行規(guī)則的命令,必須要以 tab鍵開始。如果命令行中沒有指定目標,則系統(tǒng)默認 target指向描述文件中第一個目標文件。 q make操作將根據(jù)目標文件是否已經(jīng)更新返回 0或非 0的狀態(tài)信息。f39。 elf格式由若干段 (section)組成,如果沒有特別指明,由標準 c源代碼生成的目標文件中包含以下段: .text(正文段 ) 包含程序的指令代碼, .data(數(shù)據(jù)段 )包含固定的數(shù)據(jù),如常量,字符串等, .bss(未初始化數(shù)據(jù)段 ) 包含未初始化的變量和數(shù)組等。它具體完成哪一步,是由 gcc后面的開關(guān)選項和文件類型決定的 gcc編譯器有許多選項 , 但對于普通用戶來說只要知道其中常用的幾個就夠了 。 例如下面一個非常簡單的 Hello源程序(): /********************************** * File Name: * Description: introduce how to pile a source file with gcc * Author: Xueyuan Nie * Date: *********************************/ void main() { printf(Hello the world\n); } 要編譯這個程序 , 我們只要在 Linux的 bash提示符下輸入命令: $ gcc o hello gcc 編譯器就會生成一個 hello的可執(zhí)行文件。 一旦學(xué)習(xí)和掌握了相關(guān)工具后 , 就了解了系統(tǒng)設(shè)計的基礎(chǔ)知識 。 運行于 Linux操作系統(tǒng)下的自由軟件 GNU gcc編譯器 , 不僅可以編譯 Linux操作系統(tǒng)下運行的應(yīng)用程序 , 還可以編譯 Linux內(nèi)核本身 ,甚至可以作交叉編譯 , 編譯運行于其它 CPU上的程序 。在 行 ./hello就可以看到程序的輸出結(jié)果,在屏幕上打印出 “ Hello the world”的字符串來。 在這里為讀者列出幾個最常用的選項: o選項表示要求編譯器生成指定文件名的可執(zhí)行文件; c選項表示只要求編譯器進行編譯 , 而不要進行鏈接 ,生成以源文件的文件名命名但把其后綴由 .c或 .cc變成 .o的目標文件; g選項要求編譯器在編譯的時候提供以后對程序進行調(diào)試的信息; E選項表示編譯器對源文件只進行預(yù)處理就停止 , 而不做編譯 , 匯編和鏈接; S選項表示編譯器只進行編譯 , 而不做匯編和鏈接; O選項是編譯器對程序提供的編譯優(yōu)化選項 , 在編譯的時候使用該選項 , 可以使生成的執(zhí)行文件的執(zhí)行效率提高; Wall 選項指定產(chǎn)生全部的警告信息 。 當改變了源文件 , 需要重新編譯它: $gcc c 然后重新鏈接生成: $gcc –o 對于本例,因為只含有一個源文件,所以當改動了源碼后,進行重新的編譯鏈接的過程顯得并不是太繁瑣,但是,如果在一個工程中包含了若干的源碼文件,而這些源碼文件中的某個或某幾個又被其他源碼文件包含,那么,如果一個文件被改動,則包含它的那些源文件都要進行重新編譯鏈接,工作量是可想而知的。 參數(shù),則系統(tǒng)將默認當前目錄下名為 makefile或者名為 Makefile的文件為描述文件。 p 輸出所有宏定義和目標文件描述。 make如何實現(xiàn)對源代碼的操作是通過一個被稱之為 makefile的文件來完成的,在下面的小節(jié)里,主要向讀者介紹一下makefile的相關(guān)知識 makefile基本結(jié)構(gòu) GNU Make 的主要工作是讀一個文本文件 makefile。 下面舉一個簡單的 makefile的例子。 現(xiàn)在, 再回到第一個規(guī)則處,如果剛才兩個規(guī)則中的任何一個被執(zhí)行,最終的目標文件 executable都需要重建 (因為executable所依賴的其中一個 .o 文件就會比它新 ),因此鏈接命令就會被執(zhí)行。 $ 擴展為當前規(guī)則的目標文件名; $ 擴展為當前規(guī)則依賴文件列表中的第一個依賴文件; $? 擴展為所有的修改日期比當前規(guī)則的目標文件的創(chuàng)建日期更晚的依賴文件 , 該值只有在使用顯式規(guī)則時才會被使用; $* 擴展成當前規(guī)則中目標文件和依賴文件共享的文件名 , 不含擴展名; $^ 擴展為整個依賴文件的列表 (除掉了所有重復(fù)的文件名 )。同時可用來定義目標和依賴文件之間的關(guān)系,例如下面的模式規(guī)則定義了如何將任意一個 .c 文件轉(zhuǎn)換為文件名相同的 .o 文件: %.o : %.c $(CC) $(CFLAGS) $(CPPFLAGS) c o $ $ 偽目標 如果需要最終產(chǎn)生兩個和更多的可執(zhí)行文件 , 但這些文件是相互獨立的 , 也就是說任何一個目標文件的重建 , 不會影響其他目標文件 。all39。 偽目標在 makefile中廣泛使用 函數(shù) makefile 里的函數(shù)跟它的宏很相似,在使用的時候,用一個 $ 符號開始后跟圓括號,在圓括號內(nèi)包含函數(shù)名,空格后跟一系列由逗號分隔的參數(shù)。 另一個有用的函數(shù)是 patsubst (patten substitude, 匹配替換的縮寫 ) 函數(shù)。 取代。 EXT_CC_OPTS = DEXT_MODE 39。 SRCS = … 39。 LD= gcc39。 在 makefile文件中 , 用符號 39。在程序運行出錯時,它為程序開發(fā)者提供程序運行時的詳細細節(jié),從而找到出錯的原因。 當然,也可以使用行號設(shè)置中斷位置,上面設(shè)置中斷的語句可以等價為 break 604, 可以在屏幕上看到相同的效果。 當在調(diào)試過程中 , 想查看一個變量值的時候 , 可以在 gdb環(huán)境下 輸 入 命 令 : watch variablename , 這 里 的variablename是你想觀察的變量名 。x)。 } 要使用 gdb調(diào)試程序 , 一定要在編譯程序時 , 使用 g編譯選項 , 以生成參數(shù)符號表( augmented symbol table), 提供調(diào)試信息 。x。 要退出 gdb, 請鍵入命令 quit, 如果程序此時仍在進行 ,gdb會讓你確認是否真的要退出 , 屏幕會出現(xiàn)類似下面的提示信息: (gdb) quit The program is running. Exit anyway? (y or n) 按下 ‘ y’即退出調(diào)試程序,如果程序本身已經(jīng)運行完畢,則quit命令鍵入后,會直接退出 gdb,而不出現(xiàn)任何提示信息 。 } s_2。 fflush(stdout)。 } gcc和 vc的結(jié)果是 9, 12, tc2的結(jié)果都是 5,因為 tc的 int是 2位的,對于 pc的開發(fā)問題不是很大,但是對于嵌入式開發(fā),必須考慮到內(nèi)存浪費的問題。 如果效率非常重要,就盡量不要使用 pragma pack, 如果必須使用,也最好僅在需要的地方進行設(shè)置。 這特別表現(xiàn)在為別人開發(fā)庫文件時,如果一個庫函數(shù)使用了 struct作為其參數(shù),當調(diào)用者與庫文件開發(fā)者使用不同的 pack時,就會造成錯誤,而且該類錯誤很不好查。 int j。 = 0x4D4E4F50。 = 0x45464748。 int j。 (gdb) next In main(): 8 printf( x is %d and is stored at %p.\n, x, amp。在 bash提示符下,鍵入命令 :gdb example1, 啟
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1