版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第2部分 Linux下C編程基礎(chǔ)2. Linux下C編程基礎(chǔ)2.1 vim文本編輯器 2.2 gcc編譯器2.3 gdb調(diào)試器2.4 make工程管理2.5 autotools2基本編程環(huán)境要求使用Ubuntu 10.x版本Linux終端的基本命令vim編輯器的基本使用Vim的配置,使其能適合C/C+開發(fā)。參考:3基本編程環(huán)境要求Makefile文件了解作用,會寫基本的Makefile文件Code:Block開發(fā)工具安裝。可在Ubuntu的軟件中以進行。Code:Block沒有直接提供Ubuntu的二進制版本,但Ubuntu軟件中心提供了。在Code:Block中進行程序的開發(fā)(編寫、編譯及調(diào)
2、試等)。41 vim文本編輯器5Vi 由Bill Joy于1976年寫成,融合了兩種更原始的編輯工具:ed和ex。Vi代表著“visual interface”。Vim兼容所有vi命令。不僅能應(yīng)用于Linux系統(tǒng),也有其他系統(tǒng)的運行版本。支持文本字符高亮度顯示。幾乎所有的Linux系統(tǒng)缺省安裝Vi或者Vim。在ubuntu下實際使用的是Vim。 1.1 vi文本編輯器簡介6命令區(qū)編輯區(qū)一般模式: 鍵盤上的字母鍵成為功能鍵編輯模式:鍵盤上的字母鍵都可以輸入字符命令行模式: 存儲、退出、分頁等命令1.2 Vim操作模式7h或左方向鍵 光標(biāo)向左移動一個字符j或下方向鍵 光標(biāo)向下移動一個字符k或上方向
3、鍵 光標(biāo)向上移動一個字符l或右方向鍵 光標(biāo)向右移動一個字符Ctrl + f 屏幕向前翻動一頁Ctrl + b 屏幕向后翻動一頁數(shù)字0鍵 移動到這一行的第一個字符處$ 移動到這一行的最后一個字符處n 移動到這個文件的第n行/word 在光標(biāo)之后查找一個名為word的字符串 1.3 移動光標(biāo)與查找命令8按$鍵光標(biāo)移向句尾按2enter光標(biāo)下移2行1.3 移動光標(biāo)與查找命令9按/鍵輸入printf然后enter光標(biāo)指向要查找的字符處1.3 移動光標(biāo)與查找命令10插入或添加字符等操作:i , I 在當(dāng)前光標(biāo)所在處插入輸入的文字a , A 由當(dāng)前光標(biāo)所在處的下一個字符開始輸入o , O 從光標(biāo)所在處的下
4、一行行首開始輸入字符r , R r會替換光標(biāo)所指的那個字符,R會一直替換 光標(biāo)所指的文字cw 替換當(dāng)前光標(biāo)到單詞的末尾的內(nèi)容c$ 替換當(dāng)前光標(biāo)到行末的內(nèi)容1.4 文本編輯相關(guān)指令11刪除字符操作:x , X 在當(dāng)前光標(biāo)所在處刪除前面的字符 dw 刪除當(dāng)前光標(biāo)處一個單詞d$ 從當(dāng)前光標(biāo)刪除至當(dāng)前行末尾 dd 刪除一行1.4 文本編輯相關(guān)指令12恢復(fù)及復(fù)制字符相關(guān)操作:u 撤消以前的操作U 撤消在一行中所做的改動ctrl + r 撤消以前的撤消命令,恢復(fù)以前的操作結(jié)果p 重新置入已經(jīng)刪除的文本內(nèi)容v, y 復(fù)制粘帖按鍵,定義字符串的頭尾p,P 粘帖字符串于光標(biāo)處1.4 文本編輯相關(guān)指令13按i在當(dāng)
5、前光標(biāo)處添加內(nèi)容按a在當(dāng)前光標(biāo)后開始添加內(nèi)容,按esc退出編輯模式1.4 文本編輯相關(guān)指令14按xorX鍵刪除單個字符按dw刪除一個單詞按dd刪除一行1.4 文本編輯相關(guān)指令15光標(biāo)處按v鍵按方向-鍵移動到句尾按下y鍵按p鍵粘帖字符串1.4 文本編輯相關(guān)指令16命令行狀態(tài)下:按:按鍵進入命令狀態(tài)按set nu設(shè)置行號按set nonu 取消行號按q! 不保存退出vi按q 退出但如有修改文本操作,無法退出按wq保存并推出vi,直接輸入ZZ相當(dāng)于wq按w 保存操作按ESC退出命令狀態(tài)按!命令執(zhí)行shell下的命令, exit退出shell,即可回到vi下1.5 命令行模式指令17保證當(dāng)前模式為一般
6、模式按:進入命令行模式輸入wqw:保存 q:退出輸入q!不保存退出1.5 命令行模式指令18命令行狀態(tài)下:按sp 分頁顯示按close 關(guān)閉當(dāng)前頁面按new 新建頁面按wqall 退出并保存所有頁面按qall! 不保存退出所有頁面按ctrl+w 頁面之間切換按e 打開文本文件1.6 分頁操作指令191.6 分頁操作指令201.6 分頁操作指令211.6 分頁操作指令222. Linux下C編程基礎(chǔ)2.1 vim文本編輯器 2.2 gcc編譯器2.3 gdb調(diào)試器2.4 make工程管理2.5 autotools232 gcc編譯器 GNU CC(簡稱為gcc)是GNU項目中符合ANSI C標(biāo)準(zhǔn)
7、的編譯系統(tǒng),能夠編譯用C、C+和Object C等語言編寫的程序。gcc還可以編譯如C、C+、Object C、Java、Fortran、Pascal和Ada等多種語言。gcc又是一個交叉平臺編譯器,它能夠在當(dāng)前CPU平臺上為多種不同體系結(jié)構(gòu)的硬件平臺開發(fā)軟件,尤其適合在嵌入式領(lǐng)域的開發(fā)編譯。 24gcc編譯過程#includeint main() printf(Hello! This is our embedded world!n); return 0;printf()的申明在頭文件stdio.h中int printf(const char *fmt, .);printf()的實現(xiàn)在庫/li
8、b/libc.so.6中printf.o;25gcc編譯過程26gcc所支持后綴名解釋 27gcc - 預(yù)處理階段(1)對包含的頭文件(#include)和宏定義(#define、#ifdef等)進行處理 。可以使用gcc的選項“-E” 讓gcc在預(yù)處理結(jié)束后停止編譯過程。 rootlocalhost# gcc E hello.c o hello.i/* hello.i */typedef int (*_gconv_trans_fct) (struct _gconv_step *, struct _gconv_step_data *, void *, _const unsigned char
9、*, _const unsigned char *, _const unsigned char *, unsigned char *, size_t *);# 2 hello.c 2int main()printf(Hello! This is our embedded world!n);return 0;28gcc -編譯階段(2)gcc首先檢查代碼的規(guī)范性、是否有語法錯誤等,以確定代碼實際要做的工作,在檢查無誤后,gcc把代碼翻譯成匯編語言。用戶可以使用“-S”選項來進行查看,該選項只進行編譯而不進行匯編,生成匯編代碼。rootlocalhost# gcc S hello.i o hell
10、o.s29gcc -編譯階段(2)/* hello.s */ .filehello.c .section.rodata .align 4.LC0: .string Hello! This is our embedded world! .text.globl main .type main, functionmain: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax addl $15, %eax addl $15, %eax shrl $4, %eax sall $4, %eax subl %eax,
11、%esp subl $12, %esp pushl $.LC0 call puts addl $16, %esp movl $0, %eax leave ret .sizemain, .-main .ident GCC: (GNU) 4.0.0 200X0Y19 (Red Hat 4.0.0-8) .section .note.GNU-stack,progbits30gcc -匯編階段(3)將編譯階段生成的”.s”文件轉(zhuǎn)成目標(biāo)文件,用選項 “-c”只產(chǎn)生目標(biāo)代碼,不鏈接。rootlocalhost# gcc c hello.s o hello.o31gcc -鏈接階段(4)將庫鏈接進來生成可執(zhí)
12、行文件rootlocalhost# gcc hello.o o hello32gcc - 常用選項33gcc -庫選項 將一些常用公共函數(shù)編譯并集成到函數(shù)庫中,不僅能夠節(jié)省內(nèi)存資源,而且大大降低開發(fā)難度和開銷,提高開發(fā)效率并增強程序的結(jié)構(gòu)性。靜態(tài)庫是一系列的目標(biāo)文件(.o文件)的歸檔文件(文件名格式為libname.a),如果在編譯某個程序時鏈接靜態(tài)庫,則鏈接器將會搜索靜態(tài)庫,從中提取出它所需要的目標(biāo)文件并直接拷貝到該程序的可執(zhí)行二進制文件(ELF格式文件)之中;動態(tài)庫(文件名格式為libname.so.主版本號.次版本號.發(fā)行號)在程序編譯時并不會被鏈接到目標(biāo)代碼中,而是在程序運行時才被載入
13、。 34gcc -庫選項 35Linux函數(shù)庫的創(chuàng)建與使用/* unsgn_pow.c:庫程序 */unsigned long long unsgn_pow(unsigned int x, unsigned int y) unsigned long long res = 1; if (y = 0) res = 1; else if (y = 1) res = x; else res = x * unsgn_pow(x, y - 1); return res;/* pow_test.c */#include #include int main(int argc, char *argv) unsi
14、gned int x, y; unsigned long long res; if (argc 3) | (sscanf(argv1, %u, &x) != 1) | (sscanf(argv2, %u, &y) != 1) printf(Usage: pow base exponentn); exit(1); res = unsgn_pow(x, y); printf(%u %u = %un, x, y, res); exit(0);36靜態(tài)庫的創(chuàng)建和使用$ gcc -c unsgn_pow.c $ ar rcsv libpow.a unsgn_pow.o$ gcc -o pow_test
15、pow_test.c -L. lpow$ ./pow_test 2 102 10 = 1024 編譯時鏈接到庫文件libpow.a中37動態(tài)庫的創(chuàng)建和使用$ gcc -fPIC -Wall -c unsgn_pow.c$ gcc -shared -o libpow.so unsgn_pow.o$ gcc -o pow_test pow_test.c -L. lpow 在運行可執(zhí)行程序之前,需要注冊動態(tài)庫的路徑名。其方法有幾種:修改/etc/ld.so.conf文件,或者修改LD_LIBRARY_PATH環(huán)境變量,或者將庫文件直接拷貝到/lib或者/usr/lib目錄下(這兩個目錄為系統(tǒng)的默認(rèn)的
16、庫路徑名)。$ cp libpow.so /lib$ ./pow_test 2 102 10 = 1024 38靜態(tài)庫與動態(tài)庫的比較動態(tài)庫只有在使用它的程序執(zhí)行時才被鏈接使用,而不是將需要的部分直接編譯入可執(zhí)行文件中,并且一個動態(tài)庫可以被多個程序使用故可稱為共享庫;靜態(tài)庫將會整合到程序中,因此在程序執(zhí)行時不用加載靜態(tài)庫。 從而可知,鏈接到靜態(tài)庫會使你的程序臃腫,并且難以升級,但是可能會比較容易部署。而鏈接到動態(tài)庫會使你的程序輕便,并且易于升級,但是會難以部署。 39gcc - 警告選項(1)#includevoid main() long long tmp=1; printf(“This is
17、 a bad code!n”); return 0;-Werror40gcc - 警告選項(2)$ gcc ansi warning.c o warningwarning.c: 在函數(shù)“main”中:warning.c:7 警告:在無返回值的函數(shù)中,“return”帶返回值warning.c:4 警告:“main”的返回類型不是“int”#includevoid main() long long tmp=1; printf(“This is a bad code!n”); return 0;41gcc - 警告選項(3)$ gcc pedantic warning.c o warningwar
18、ning.c: 在函數(shù)“main”中:warning.c:5 警告:ISO C90不支持“l(fā)ong long”warning.c:7 警告:在無返回值的函數(shù)中,“return”帶返回值warning.c:4 警告:“main”的返回類型不是“int” #includevoid main() long long tmp=1; printf(“This is a bad code!n”); return 0;42gcc - 警告選項(3)$ gcc Wall warning.c o warningwarning.c: 在函數(shù)“main”中: warning.c:7 警告:在無返回值的函數(shù)中,“re
19、turn”帶返回值warning.c:4 警告:“main”的返回類型不是“int”warning.c:5 警告:未使用的變量“tmp” #includevoid main() long long tmp=1; printf(“This is a bad code!n”); return 0;43gcc - 優(yōu)化選項gcc可以對代碼進行優(yōu)化,通過編譯選項“-On”來控制優(yōu)化代碼的生成,其中n是一個代表優(yōu)化級別的整數(shù)。-O: 告訴GCC同時減小代碼的長度和執(zhí)行時間,其效果等價于-O1。-O2:告訴GCC除了完成所有“-O1”級別的優(yōu)化之外,同時還要進行一些額外的調(diào)整工作,如處理器指令調(diào)度等。-O
20、3: 除O2外,還包括循環(huán)展開和其他一些與處理器特性相關(guān)的優(yōu)化工作。44gcc - 體系結(jié)構(gòu)相關(guān)選項45gcc編譯選項:gcc options 需要編譯鏈接的文件名列表。-E 僅完成預(yù)處理。-S 生成匯編代碼文件。-c不進行鏈接,只生成目標(biāo)文件。-o file 輸出文件名,缺省名為a.out。-On 編譯優(yōu)化級別,n為0、1、2、3,默認(rèn)值為1,最通常的優(yōu)化為2。-g在目標(biāo)文件中嵌入調(diào)試信息,這些信息可以供如gdb之類的調(diào)試軟件使用。最簡編譯gcc g hello.c -o hello gcc c hello.s o hello.ogcc S hello.i o hello.sgcc hell
21、o.c -o hello gcc E hello.c o hello.igcc O2 hello.c -o hello 小結(jié) 462. Linux下C編程基礎(chǔ)2.1 vim文本編輯器 2.2 gcc編譯器2.3 gdb調(diào)試器2.4 make工程管理2.5 autotools473 gdb調(diào)試器gdb調(diào)試器是一款GNU開發(fā)組織發(fā)布的UNIX/Linux下的程序調(diào)試工具。雖然沒有圖形化的友好界面,但是它強大的功能也足以與微軟的VC工具等媲美。 $ gcc -g test.c -o test$ gdb testGNU gdb Red Hat Linux (-1.21rh)Copyrig
22、ht 2004 Free Software Foundation, Inc.GDB is free software, covered by the GNU General Public License, and you arewelcome to change it and/or distribute copies of it under certain conditions.Type show copying to see the conditions.There is absolutely no warranty for GDB. Type show warranty for detai
23、ls.This GDB was configured as i386-redhat-linux-gnu.Using host libthread_db library /lib/libthread_db.so.1.(gdb)48gdb調(diào)試器(gdb) b 6Breakpoint 1 at 0 x804846d: , line 6. (gdb) l1 #include 2 int sum(int m);3 int main()4 5 int i,n = 0;6 sum(50);7 for(i = 1; i = 50; i+)8 9 n += i;10 (gdb) l11 printf(The s
24、um of 150 is %d n, n );12 13 14 int sum(int m)15 16 int i, n = 0;17 for(i = 1; i = m; i+)18 19n += i;20 21 printf(The sum of 1m is = %dn, n);20 (gdb) b 19(gdb) cBreakpoin 2, sum(m=50) at test.c:1919 printf(“The sum of 1-m is %dn”, n);(gdb) bt#0 sum(m=50) at test.c:19#1 0 x080483e8 in main() at test.
25、c:6(gdb) info bNum Type Disp Enb Address What1 breakpoint keep y 0 x0804846d in main at test.c:6(gdb) rStarting program: /root/workplace/gdb/testReading symbols from shared object read from target memory.done.Loaded system supplied DSO at 0 x5fb000Breakpoint 1, main () at test.c:66 sum(50);49gdb調(diào)試器(
26、gdb) p n$1 = 0(gdb) p i$2 = 134518440(gdb) nThe sum of 1-m is 12757 for (i = 1; i = 50; i+) (gdb) ssum (m=50) at test.c:1616 int i, n = 0;(gdb) cContinuing.The sum of 1-50 is :1275Program exited with code 031. (gdb) helpList of classes of commands:aliases - Aliases of other commandsbreakpoints - Mak
27、ing program stop at certain pointsdata - Examining datafiles - Specifying and examining filesinternals - Maintenance commandsType help followed by a class name for a list of commands in that class.Type help followed by command name for full documentation.Command name abbreviations are allowed if una
28、mbiguous.(gdb) help callCall a function in the program.The argument is the function name and arguments, in the notation of thecurrent working language. The result is printed and saved in the valuehistory, if it is not void.50gdb工作環(huán)境相關(guān)命令 51gdb設(shè)置斷點與恢復(fù)命令 52gdb中源碼查看相關(guān)相關(guān)命令 將路徑添加到源文件搜索的路徑的開頭DIR53gdb中查看運行數(shù)
29、據(jù)的相關(guān)命令 542. Linux下C編程基礎(chǔ)2.1 vim文本編輯器 2.2 gcc編譯器2.3 gdb調(diào)試器2.4 make工程管理2.5 autotools554 make工程管理器make工程管理器用于管理較多的文件,其是一個“自動編譯管理器”。這里的“自動”是指它能夠:根據(jù)文件時間戳自動發(fā)現(xiàn)更新過的文件而減少編譯的工作量;通過讀入makefile文件的內(nèi)容來執(zhí)行大量的編譯工作 564 工程管理器make例一個工程項目由多個源文件組成,直接用gcc將會很麻煩Make會根據(jù)文件時間戳自動發(fā)現(xiàn)更新過的文件而減少編譯工作量make通過讀入makefile文件查找文件依賴關(guān)系執(zhí)行編譯 main
30、.cheald1.hheald2.htest1.ctest2.cheald3.hmain.otest1.otest2.otest項目test57makefile基本結(jié)構(gòu)(1)makefile是make讀入的惟一配置文件,因此本節(jié)的內(nèi)容實際就是講述makefile的編寫規(guī)則。在一個makefile中通常包含如下內(nèi)容:目標(biāo)體(target):通常是目標(biāo)文件或可執(zhí)行文件;依賴的文件:創(chuàng)建目標(biāo)體所依賴的文件;命令:創(chuàng)建目標(biāo)體時需要運行的命令,這一行必須以制表符(tab鍵)開頭。58makefile格式makefile例子使用make項目管理器makefile基本結(jié)構(gòu)(2)target: depende
31、ncy_filescommand /* 該行必須以tab鍵開頭*/hello.o: hello.c hello.h gcc c hello.c o hello.o$ make 或 make hello.o gcc c hello.c o hello.o$ lshello.c hello.h hello.o makefile 59makefile變量變量用來代替一個文本字符串 變量定義的兩種方式遞歸展開方式VAR=var簡單方式 VAR:=var變量使用$(VAR)OBJS = kang.o yul.oCC = gccCFLAGS = -Wall -O -gdavid : $(OBJS) $(C
32、C) $(OBJS) -o davidkang.o : kang.c kang.h $(CC) $(CFLAGS) -c kang.c -o kang.oyul.o : yul.c yul.h $(CC) $(CFLAGS) -c yul.c -o yul.o60makefile變量變量種類用戶自定義變量預(yù)定義變量自動變量環(huán)境變量 OBJS = kang.o yul.oCC = gccCFLAGS = -Wall -O -gdavid : $(OBJS) $(CC) $ -o $kang.o : kang.c kang.h $(CC) $(CFLAGS) -c $ -o $yul.o : yu
33、l.c yul.h $(CC) $(CFLAGS) -c $ -o $用戶自定義變量61Makefile變量-預(yù)定義變量OBJS = kang.o yul.oCC = gccCFLAGS = -Wall -O -gdavid : $(OBJS) $(CC) $ -o $kang.o : kang.c kang.h $(CC) $(CFLAGS) -c $ -o $yul.o : yul.c yul.h $(CC) $(CFLAGS) -c $ -o $預(yù)定義變量62Makefile變量-自動變量$*$+$?$%OBJS = kang.o yul.oCC = gccCFLAGS = -Wall
34、-O -gdavid : $(OBJS) $(CC) $ -o $kang.o : kang.c kang.h $(CC) $(CFLAGS) -c $ -o $yul.o : yul.c yul.h $(CC) $(CFLAGS) -c $ -o $63Makefile變量-環(huán)境變量make在啟動時會自動讀取系統(tǒng)當(dāng)前已經(jīng)定義了的環(huán)境變量,并且會創(chuàng)建與之具有相同名稱和數(shù)值的變量,但是 如果用戶在makefile中定義了相同名稱的變量,那么用戶自定義變量將會覆蓋同名的環(huán)境變量 64makefile規(guī)則 makefile的規(guī)則是make進行處理的依據(jù),它包括了目標(biāo)體、依賴文件及其之間的命令語句。隱
35、含規(guī)則模式規(guī)則65隱式規(guī)則隱含規(guī)則能夠告訴make怎樣使用傳統(tǒng)的規(guī)則完成任務(wù),這樣,當(dāng)用戶使用它們時就不必詳細(xì)指定編譯的具體細(xì)節(jié),而只需把目標(biāo)文件列出即可 例子OBJS = kang.o yul.oCC = gccCFLAGS = -Wall -O -gdavid : $(OBJS) $(CC) $ -o $OBJS = kang.o yul.oCC = gccCFLAGS = -Wall -O -gdavid : $(OBJS) $(CC) $ -o $kang.o : kang.c kang.h $(CC) $(CFLAGS) -c $ -o $yul.o : yul.c yul.h $(CC) $(CFLAGS) -c $ -o $66模式規(guī)則為多個文件建立相同的規(guī)則,以簡化makefile的編寫格式類似于普通規(guī)則,這個規(guī)則中的相關(guān)文件前必須用“%”標(biāo)明例OBJS = kang.o yul.oCC = gccCFLAGS = -Wall -O -gdavid : $(OBJS) $(CC) $ -o $%.o
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024智慧城市建設(shè)項目委托技術(shù)咨詢合同
- 2025年度租賃物買賣合同:出租人與買方之間的租賃物買賣協(xié)議3篇
- 2024年購房保密協(xié)議及市場禁入合同范本2篇
- 2024法院起訴離婚協(xié)議書樣本
- 2024版產(chǎn)品代理合同之代理范圍
- 2025年浙教版九年級生物上冊月考試卷
- 2024年魯教版三年級數(shù)學(xué)上冊階段測試試卷
- 促進全球產(chǎn)業(yè)鏈供應(yīng)鏈合作的策略與實施框架
- 2024年魯科版六年級語文上冊階段測試試卷含答案
- 2024年滬教版四年級數(shù)學(xué)下冊月考試卷
- 最新MARSI-醫(yī)用黏膠相關(guān)皮膚損傷課件
- 工程開工報審表范本
- 航空小鎮(zhèn)主題樂園項目規(guī)劃設(shè)計方案
- 保潔冬季防滑防凍工作措施
- 少兒美術(shù)課件-《我的情緒小怪獸》
- 永續(xù)債計入權(quán)益的必備條件分析
- 預(yù)應(yīng)力鋼絞線張拉伸長量計算程序單端(自動版)
- 基坑監(jiān)測課件ppt版(共155頁)
- 蠕變、應(yīng)力松弛、滯后和內(nèi)耗講解
- 開發(fā)區(qū)開發(fā)管理模式及發(fā)展要素PPT課件
- 急診科科主任述職報告范文
評論
0/150
提交評論