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

正文內(nèi)容

uclinux下應(yīng)用程序開發(fā)(編輯修改稿)

2025-06-18 11:59 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 任意一個(gè) .c 文件轉(zhuǎn)換為文件名相同的 .o 文件: %.o : %.c $(CC) $(CFLAGS) $(CPPFLAGS) c o $@ $ 偽目標(biāo) 如果需要最終產(chǎn)生兩個(gè)和更多的可執(zhí)行文件 , 但這些文件是相互獨(dú)立的 , 也就是說(shuō)任何一個(gè)目標(biāo)文件的重建 , 不會(huì)影響其他目標(biāo)文件 。此時(shí) , 可以通過使用所謂的偽目標(biāo)來(lái)達(dá)到這一目的 。 一個(gè)偽目標(biāo)和一個(gè)真正的目標(biāo)文件的唯一區(qū)別在于 , 這個(gè)目標(biāo)文件本身并不存在 。 因此 , make總是會(huì)假設(shè)它需要被生成 , 當(dāng)make把該偽目標(biāo)文件的所有依賴文件都更新后 , 就會(huì)執(zhí)行它的規(guī)則里的命令行 。 舉一個(gè)簡(jiǎn)單的例子,如果 makefile 開始處輸入 all : executable1 executable2 這里 executable1和 executable2是最終希望生成的兩個(gè)可執(zhí)行文件。 make 把這個(gè) 39。all39。 做為它的主要目標(biāo),每次執(zhí)行時(shí)都會(huì)嘗試把 39。all39。 更新。但是,由于這行規(guī)則里并沒有命令來(lái)作用在一個(gè)叫 39。all39。 的實(shí)際文件上 (事實(shí)上, all 也不會(huì)實(shí)際生成 ),所以這個(gè)規(guī)則并不真的改變 39。all39。 的狀態(tài)??杉热贿@個(gè)文件并不存在,所以 make 會(huì)嘗試更新 all 規(guī)則,因此就檢查它的依賴文件 executable1, exectable2 是否需要更新,如果需要,就把它們更新,從而達(dá)到生成兩個(gè)目標(biāo)文件的目的。 偽目標(biāo)在 makefile中廣泛使用 函數(shù) makefile 里的函數(shù)跟它的宏很相似,在使用的時(shí)候,用一個(gè) $ 符號(hào)開始后跟圓括號(hào),在圓括號(hào)內(nèi)包含函數(shù)名,空格后跟一系列由逗號(hào)分隔的參數(shù)。例如,在 GNU Make 里有一個(gè)名為 39。wildcard39。 的函 數(shù),它只有一個(gè)參數(shù),功能是展開成一列所有符合由其參數(shù)描述的文件名,文件間以空格間隔??梢韵裣旅嫠臼褂眠@個(gè)命令: SOURCES = $(wildcard *.c) 這樣會(huì)產(chǎn)生一個(gè)所有以 39。.c39。 結(jié)尾的文件的列表,然后存入變量 SOURCES 里。當(dāng)然你不需要一定要把結(jié)果存入一個(gè)變量。 另一個(gè)有用的函數(shù)是 patsubst (patten substitude, 匹配替換的縮寫 ) 函數(shù)。它需要3個(gè)參數(shù):第一個(gè)是一個(gè)需要匹配的模式,第二個(gè)表示用什么來(lái)替換它,第三個(gè)是一個(gè)需要被處理的由空格分隔的字列。例如,處理那個(gè)經(jīng)過上面定義后的變量, OBJS = $(patsubst %.c,%.o,$(SOURCES)) 這個(gè)語(yǔ)句將處理所有在 SOURCES宏中的文件名后綴是 39。.c39。的文件 ,用 39。.o39。 把 39。.c39。 取代。注意這里的 % 符號(hào)是通配符,匹配一個(gè)或多個(gè)字符,它每次所匹配的字符串叫做一個(gè) ‘ 柄 ’ (stem) 。在第二個(gè)參數(shù)里, % 被解釋成用第一參數(shù)所匹配的那個(gè)柄。 makefile的一個(gè)具體例子 INCLUDES =I/home/nie/mysrc/include \ I/home/nie/mysrc/extern/include \ I/home/nie/mysrc/src \ I/home/nie/mysrc/libsrc \ I. \ I.. EXT_CC_OPTS = DEXT_MODE CPP_REQ_DEFINES = DMODEL=tune1 DRT DNUMST=2 \ DTID01EQ=1 DNCSTATES=0 \ DMT=0 DHAVESTDIO RTM_CC_OPTS = DUSE_RTMODEL CFLAGS = O g CFLAGS += $(CPP_REQ_DEFINES) CFLAGS += $(EXT_CC_OPTS) CFLAGS +=$(RTM_CC_OPTS) SRCS = \ \ \ OBJS = $(SRCS:.c=.o) RM = rm –f CC = gcc LD = gcc all: tune1 %.o : %.c $(CC) c o $@ $(CFLAGS) $(INCLUDES) $ tune1 : $(OBJS) $(LD) o $@ $(OBJS) lm clean : $(RM) $(OBJS 在這個(gè) makefile中首先定義了十個(gè)宏: 39。 INCLUDES =I … 39。(省略號(hào)代表 I后面的內(nèi)容 ), 39。I dirname39。 表示將dirname所指的目錄加入到程序頭文件目錄列表中去 , 是在進(jìn)行預(yù)處理過程中使用的參數(shù); 39。 EXT_CC_OPTS = DEXT_MODE 39。 表 示 在 程 序 中 定 義 了 宏EXT_MODE, 等價(jià)于在源代碼寫入語(yǔ)句 39。 define EXT_MODE 39。 ; 接下來(lái)的兩個(gè)宏定義 CPP_REQ_DEFINES 和 RTM_CC_OPTS起到和EXT_CC_OPTS類似的作用; 39。CFLAGS =O g 39。是編譯器的編譯選項(xiàng) , 表示在編譯的過程中對(duì)代碼進(jìn)行基本優(yōu)化 , 并產(chǎn)生能被 GNU調(diào)試器 (如 gdb)使用的調(diào)試信息; 39。CFLAGS += 39。 表示對(duì)這個(gè)宏定義在原來(lái)的基礎(chǔ)上增加新的內(nèi)容; 39。 SRCS = … 39。代表了所有要編譯的源代碼文件列表; 39。 OBJS = $(SRCS:.c=.o)39。表示把宏 SRC所代表的所有以 .c結(jié)尾的文件名用 .o結(jié)尾的文件名替換 , 即表示各個(gè)源文件所對(duì)應(yīng)的目標(biāo)文件名; 39。 RM = rm –f 39。 表示刪除命令 , f是強(qiáng)制刪除選項(xiàng) , 使用該符號(hào) , 在對(duì)文件進(jìn)行刪除時(shí) , 沒有提示; 39。 CC = gcc 39。表示編譯器是用 gcc; 39。 LD= gcc39。 表示鏈接命令是用 gcc; all和 clean是兩個(gè)偽目標(biāo) , 在使用 make命令的時(shí)候 , 如果不指明目標(biāo)文件名 , 則是以在 makefile 中出現(xiàn)的第一個(gè)目標(biāo)作為最終目標(biāo) , 所以如果鍵入命令 make, 則偽目標(biāo) all被作為最終的目標(biāo)而執(zhí)行 , 由于這個(gè)文件并不存在 , 所以 make 會(huì)嘗試更新 all 規(guī)則 , 因此就檢查它的依賴文件 tune1 是否需要更新 , 如果需要 , 就把它更新 , 這樣偽目標(biāo)下面的兩條規(guī)則就會(huì)被執(zhí)行 , 從而生成可執(zhí)行文件 tune1。如果要執(zhí)行刪除命令 , 只需要鍵入命令 make clean, 就會(huì)把所有以 .o結(jié)尾的中間文件刪除 。 另外 , 請(qǐng)注意在本 makefile的例子中多次用到 39。 \39。, 該符號(hào)用于在 makefile中 , 如果一條語(yǔ)句過長(zhǎng)時(shí) , 可以用 39。 \39。放在這條語(yǔ)句的右邊界 , 通過回車換行 , 使下面新一行的語(yǔ)句成為該語(yǔ)句的續(xù)行 。 在 makefile文件中 , 用符號(hào) 39。 39。作為注釋行語(yǔ)句的開始 , 以增強(qiáng) makefile文件的可讀性 。 本例假設(shè) makefile文件名為 makefile, 當(dāng)然也可按照個(gè)人的喜好取其他文件名,如果文件名不是 makefile, Makefile的話,在用 make命令是,請(qǐng)使用 make –f makefilename。 使用 GDB調(diào)試程序 無(wú)論是多么資深的程序員在編寫的程序時(shí) , 都不大可能一次性就會(huì)成功 , 在程序運(yùn)行時(shí) , 會(huì)出現(xiàn)許許多多意想不到的錯(cuò)誤 , 一味地只是查看程序用處不大 , 最有效的方法通過一些手段進(jìn)入到程序內(nèi)部進(jìn)行調(diào)試 。 通常在調(diào)試程序的時(shí)候如果能夠得到以下一些信息 , 對(duì)于開發(fā)者找到錯(cuò)誤所在是很有幫助的 。
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1