




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
精通GCC編譯器精通GCC編譯器1contentGCC概論GCC深入探索GCC的編譯選項(xiàng)GCC的應(yīng)用技巧contentGCC概論201.GCC是何物?Linux系統(tǒng)下的gcc(GNUCCompiler)是GNU推出的功能強(qiáng)大、性能優(yōu)越的多平臺(tái)編譯器,是GNU的代表作品之一。gcc是可以在多種硬體平臺(tái)上編譯出可執(zhí)行程序的超級(jí)編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高20%~30%。
gcc編譯器能將C、C++語(yǔ)言源程序、匯程式化序和目標(biāo)程序編譯、連接成可執(zhí)行文件,如果沒有給出可執(zhí)行文件的名字,gcc將生成一個(gè)名為a.out的文件。在Linux系統(tǒng)中,可執(zhí)行文件沒有統(tǒng)一的后綴,系統(tǒng)從文件的屬性來區(qū)分可執(zhí)行文件和不可執(zhí)行文件。而gcc則通過后綴來區(qū)別輸入文件的類別,下面我們來介紹gcc所遵循的部分約定規(guī)則。DEMO01.GCC是何物?Linux系統(tǒng)下的gcc(GNUCGCC的幾個(gè)版本請(qǐng)問GCC和cc有啥區(qū)別?怎樣在linux下查看GCC的版本信息?GCC的幾個(gè)版本請(qǐng)問GCC和cc有啥區(qū)別?查看版本信息查看版本信息安裝路徑:安裝路徑:相關(guān)文件類型:c
為后綴的文件,C語(yǔ)言源代碼文件;.a
為后綴的文件,是由目標(biāo)文件構(gòu)成的檔案庫(kù)文件;.C,.cc或.cxx為后綴的文件,是C++源代碼文件;.h
為后綴的文件,是程序所包含的頭文件;.i
為后綴的文件,是已經(jīng)預(yù)處理過的C源代碼文件;.ii
為后綴的文件,是已經(jīng)預(yù)處理過的C++源代碼文件;.m
為后綴的文件,是Objective-C源代碼文件;.o
為后綴的文件,是編譯后的目標(biāo)文件;.s
為后綴的文件,是匯編語(yǔ)言源代碼文件;.S
為后綴的文件,是經(jīng)過預(yù)編譯的匯編語(yǔ)言源代碼文件。相關(guān)文件類型:c為后綴的文件,C語(yǔ)言源代碼文件;gcc編譯的4個(gè)過程:預(yù)處理(也稱預(yù)編譯,Preprocessing):命令gcc首先調(diào)用cpp進(jìn)行預(yù)處理,在預(yù)處理過程中,對(duì)源代碼文件中的文件包含(include)、預(yù)編譯語(yǔ)句(如宏定義define等)進(jìn)行分析。編譯(Compilation):接著調(diào)用cc1進(jìn)行編譯,這個(gè)階段根據(jù)輸入文件生成以.o為后綴的目標(biāo)文件。匯編(Assembly):匯編過程是針對(duì)匯編語(yǔ)言的步驟,調(diào)用as進(jìn)行工作。連接(Linking):當(dāng)所有的目標(biāo)文件都生成之后,gcc就調(diào)用ld來完成最后的關(guān)鍵性工作,這個(gè)階段就是連接參考:《深入透析》gcc編譯的4個(gè)過程:預(yù)處理(也稱預(yù)編譯,Preproces演示:DEMO基本的用法是∶gcc[options][filenames]演示:DEMO1、沒有任何選項(xiàng):gcchelloworld.c
結(jié)果會(huì)在和helloworld.c相同的目錄下產(chǎn)生一個(gè)a.out的可執(zhí)行文檔。2、-o選項(xiàng),指定輸出文檔名:gcc-ohelloworldhelloworld.c
-o意思是Output即需要指定輸出的可執(zhí)行文檔的名稱。這里的名稱為helloworld。3、-c選項(xiàng),只編譯,不匯編連接:gcc-chelloworld.c
-c意思就是Compile,產(chǎn)生一個(gè)叫helloworld.o的目標(biāo)文檔4、-S選項(xiàng),產(chǎn)生匯編源文檔:gcc-Shelloworld.c
-S意思就是aSsemble,產(chǎn)生一個(gè)叫helloworld.s的匯編源文檔5、-E選項(xiàng),預(yù)處理C源文檔:gcc-Ehelloworld.c
-E意思就是prEprocess。輸出不是送到一個(gè)文檔而是標(biāo)準(zhǔn)輸出。當(dāng)然能夠?qū)λM(jìn)行重定向:
gcc-Ehelloworld.c>helloworld.txt1、沒有任何選項(xiàng):gcchelloworld.c優(yōu)化選項(xiàng)
-O選項(xiàng),基本優(yōu)化:gcc-Ohelloworld.c
-O意思就是Optimize,產(chǎn)生一個(gè)經(jīng)過優(yōu)化的叫作a.out的可執(zhí)行文檔。也能夠同時(shí)使用-o選項(xiàng),以指定輸出文檔名。如:
gcc-O-otesthelloworld.c
即會(huì)產(chǎn)生一個(gè)叫test的經(jīng)過優(yōu)化的可執(zhí)行文檔。
-O2選項(xiàng),最大優(yōu)化:gcc-O2helloworld.c
產(chǎn)生一個(gè)經(jīng)過最大優(yōu)化的叫作a.out的可執(zhí)行文檔。優(yōu)化選項(xiàng)調(diào)試選項(xiàng)
-g選項(xiàng),產(chǎn)生供gdb調(diào)試用的可執(zhí)行文檔:
gcc-ghelloworld.c
產(chǎn)生一個(gè)叫作a.out的可執(zhí)行文檔,大小明顯比只用-o選項(xiàng)編譯匯編連接后的文檔大。
-pg選項(xiàng),產(chǎn)生供gprof剖析用的可執(zhí)行文檔:
gcc-pghelloworld.c
產(chǎn)生一個(gè)叫作a.out的執(zhí)行文檔,大小明顯比用-g選項(xiàng)后產(chǎn)生的文檔還大。調(diào)試選項(xiàng)02.GCC快速入門第一個(gè)實(shí)例hello!DEMO02.GCC快速入門第一個(gè)實(shí)例hello!GCC常用編譯開關(guān)-w禁止輸出警告消息-Werror將所有警告轉(zhuǎn)換為錯(cuò)誤-Wall顯示所有的警告消息-v顯示編譯程序的當(dāng)前版本號(hào)-static連接器將忽略動(dòng)態(tài)連接庫(kù),同時(shí)通過將靜態(tài)目標(biāo)文件直接包含到結(jié)果目標(biāo)文件完成對(duì)所有引用的解析。-shared-fPCI連接器將生成共享目標(biāo)代碼,-pipe使用管道而不是臨時(shí)文件一個(gè)階段到另一個(gè)階段交換輸出的方式,可以加快編譯速度。建議使用。-o<filename>指定輸出文件,對(duì)各種輸出皆有效。GCC常用編譯開關(guān)-w禁止輸出警告消息-I<dir>指定搜索系統(tǒng)頭文件的目錄,可以重復(fù)使用多個(gè)該選項(xiàng)指定多個(gè)目錄-Dmacro:相當(dāng)于C語(yǔ)言中的#definemacro-UMACRO取消對(duì)MACRO宏的定義-c/-C:只激活預(yù)處理,編譯,和匯編,也就是他只把程序做成obj文件-o:指定目標(biāo)名稱-On(0,1,2,3):-S:只激活預(yù)處理和編譯,就是指把文件編譯成為匯編代碼-E:只激活預(yù)處理,這個(gè)不生成文件,你需要把它重定向到一個(gè)輸出文件里面.-I<dir>指定搜索系統(tǒng)頭文件的目錄,可以重復(fù)使用多個(gè)該-Idir:使用-I制定了目錄,先在你所制定的目錄查找,然后再按常規(guī)的順序去找頭文件.-M:生成文件關(guān)聯(lián)的信息。包含目標(biāo)文件所依賴的所有源代碼。-llibrary:指定編譯的時(shí)候使用的庫(kù)-Ldir:指定編譯時(shí)搜索庫(kù)的路徑-g:指示編譯器在編譯時(shí)產(chǎn)生調(diào)試信息。-static:此選項(xiàng)將禁止使用動(dòng)態(tài)庫(kù),所以,編譯出來的東西,一般都很大,也不需要什么動(dòng)態(tài)連接庫(kù),就可以運(yùn)行.-Idir:使用-I制定了目錄,先在你所制定的目錄查找,然后建立自己的GCC編譯環(huán)境一個(gè)系統(tǒng)上如何同時(shí)存在并使用多個(gè)版本的GCC編譯器?建立目標(biāo)目錄:在gcc源代碼同一級(jí)目錄下(與源目錄${srcdir}是同級(jí)目錄)%mkdirgcc-build%cdgcc-build配置環(huán)境:%../gcc-3.4.0/configure--prefix=/usr/local/gcc-3.4.0--enable-threads=posix--disable-checking--enable--long-long--host=i386-redhat-linux--with-system-zlib--enable-languages=c,c++,java將GCC安裝在/usr/local/gcc-3.4.0目錄下,支持C/C++和JAVA語(yǔ)言建立自己的GCC編譯環(huán)境一個(gè)系統(tǒng)上如何同時(shí)存在并使用多個(gè)版編譯安裝:%make&&makeinstall其它配置:GCC3.4.0的所有文件,包括命令文件(如gcc、g++)、庫(kù)文件等都在${destdir}目錄下分別存放,如命令文件放在bin目錄下、庫(kù)文件在lib下、頭文件在include下等。由于命令文件和庫(kù)文件所在的目錄還沒有包含在相應(yīng)的搜索路徑內(nèi),所以必須要作適當(dāng)?shù)脑O(shè)置之后編譯器才能順利地找到并使用它們。用符號(hào)連接的方式實(shí)現(xiàn),這樣做的好處是我仍然可以使用系統(tǒng)上原來的舊版本的GCC編譯器。%ln-s${destdir}/bin/gccgcc34庫(kù)路徑的設(shè)置:exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:{destdir}/libsetenvLD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib:$LD_LIBRARY_PATH編譯安裝:03.GCC的編譯環(huán)境工具:gccc編譯器,它在鏈接時(shí)使用c庫(kù)cc1實(shí)際的c編譯器cc1plus實(shí)際的c++編譯器collect2使用collect2產(chǎn)生特定的全局初始化代碼,后臺(tái)處理是傳遞參數(shù)給ld完成實(shí)際的鏈接工作。crt0.o初始化和結(jié)束代碼libgcc平臺(tái)相關(guān)的庫(kù)03.GCC的編譯環(huán)境工具:binutils相關(guān)工具:as:gnu匯編工具gprof:性能分析工具ld:gnu鏈接器,鏈接器可以讀寫各種目標(biāo)文件中的信息,通過BFD(binaryfiledescriptor)提供的工具實(shí)現(xiàn),BFD定義了類似a.out,elf,coff等目標(biāo)文件的格式make:objcopy:目標(biāo)文件從二進(jìn)制格式翻譯或復(fù)制到另一種objdump:顯示目標(biāo)文件的各種信息strings:顯示文件的字符串strip:去除符合表readelf:分析elf并顯示信息binutils相關(guān)工具:gcc預(yù)處理相關(guān)#defineTEST(ARGTERM)printf(“theterm“#ARGTERM“isastring\n”)#defineerr(...)fprintf(stderr,_VA_ARGS__)
err("%s%d\n","errorcodeis",48);//實(shí)現(xiàn)可變參數(shù)宏的定義.error和warning指令if,elif,else,endif指令gcc預(yù)處理相關(guān)gcc預(yù)定義宏
__BASE_FILE__完整的源文件名路徑
__cplusplus測(cè)試c++程序
__DATE__日期
__FILE__源文件名
__func__替代__FUNCTION__,__FUNCTION__以被GNU不推薦使用
__TIME__日期
__LINE__行數(shù)
__VERSION__gcc版本gcc預(yù)定義宏gas匯編工具(AT&T的風(fēng)格)ld:ld把一定量的目標(biāo)文件跟檔案文件連接起來,并重定位它們的數(shù)據(jù),連接符號(hào)引用.一般在編譯一個(gè)程序時(shí),最后一步就是運(yùn)行l(wèi)d。 autoscanfautomake等工具運(yùn)行環(huán)境變量路徑的問題gas匯編工具(AT&T的風(fēng)格)makefile+make+configure腳本Makefile包含了所有的規(guī)則和目標(biāo),而make則是為了完成目標(biāo)而去解釋Makefile規(guī)則的工具。根據(jù)源碼包中Makefile.in文件的指示,configure腳本檢查當(dāng)前的系統(tǒng)環(huán)境和配置選項(xiàng)在當(dāng)前目錄中生成Makefile文件(還有其它本文無需關(guān)心的文件),然后make程序就按照當(dāng)前目錄中的Makefile文件的指示將源代碼編譯為二進(jìn)制文件,最后將這些二進(jìn)制文件移動(dòng)(即安裝)到指定的地方(仍然按照Makefile文件的指示)。makefile+make+configure腳本autoconf主要根據(jù)程式員提供的configure.in,生成能夠自動(dòng)檢測(cè)系統(tǒng)配置的腳本configure。而后再由configure根據(jù)各目錄下的Makefile.in自動(dòng)生成Makefile。這樣,程式員就能夠直接使用具備豐富功能的Makefile了。autoconfautoconf產(chǎn)生makefile的過程:運(yùn)行autoscan命令將configure.scan文檔重命名為configure.in,并修改configure.in文檔在project目錄下新建Makefile.am文檔,并在core和shell目錄下也新建makefile.am文檔在project目錄下新建NEWS、README、ChangeLog、AUTHORS文檔將/usr/share/automake-1.X/目錄下的depcomp和complie文檔拷貝到本目錄下運(yùn)行aclocal命令運(yùn)行autoconf命令運(yùn)行automake-a命令運(yùn)行./confiugre腳本autoconf產(chǎn)生makefile的過程:automake由于Makefile.in仍然可能比較復(fù)雜,automake能夠根據(jù)程式員編寫的Makefile.am自動(dòng)生成Makefile.in。在調(diào)用automake時(shí),往往要使用-a選項(xiàng),該選項(xiàng)將自動(dòng)建立一些項(xiàng)目需要的文檔(以建立符號(hào)連接的形式),他們是:install-sh、missing、mkinstalldirs、doc/mdate-sh等等。假如在除了使用-a選項(xiàng)外,還使用-c選項(xiàng),則不是在項(xiàng)目目錄中制作到系統(tǒng)相應(yīng)文檔的連接,而是將文檔復(fù)制到項(xiàng)目目錄中。automake03.GCC編譯優(yōu)化優(yōu)化原理: 從運(yùn)行時(shí)的依賴關(guān)系來看,對(duì)性能有較大影響的組件有kernel和glibc,經(jīng)過正確的版本選擇、合理的配置、優(yōu)化編譯的內(nèi)核與C庫(kù)將對(duì)提高系統(tǒng)的性能起著基礎(chǔ)性的作用。從被編譯的軟件包來看,每個(gè)軟件包的configure腳本都提供了許多配置選項(xiàng),其中有許多選項(xiàng)是與性能息息相關(guān)的。比如,對(duì)于Apache-2.2.6而言,你可以使用--enable-MODULE=static將模塊靜態(tài)編譯進(jìn)核心,使用--disable-MODULE禁用不需要的模塊,使用--with-mpm=MPM選擇一個(gè)高效的多路處理模塊,在不需要IPv6的情況下使用--disable-ipv6禁用IPv6支持,在不使用線程化的MPM時(shí)使用--disable-threads禁用線程支持等。針對(duì)特定的軟件包,請(qǐng)?jiān)诰幾g前使用configure--help查看所有選項(xiàng),合理的選用。03.GCC編譯優(yōu)化優(yōu)化原理: 從編譯過程自身來看,將源代碼編譯為二進(jìn)制文件是在Makefile文件的指導(dǎo)下,由make程序調(diào)用一條條編譯命令完成的。而將源代碼編譯為二進(jìn)制文件又需要經(jīng)過以下四個(gè)步驟:預(yù)處理(cpp)→編譯(gcc或g++)→匯編(as)→連接(ld);括號(hào)中表示每個(gè)階段所使用的程序,它們分別屬于GCC和Binutils軟件包。顯然優(yōu)化應(yīng)當(dāng)從編譯工具自身的選擇以及控制編譯工具的行為入手。從編譯過程自身來看,將源代碼編譯為二進(jìn)制文件是在Makef常用優(yōu)化選項(xiàng)gcc默認(rèn)提供了5級(jí)優(yōu)化選項(xiàng)的集合:-O0:無優(yōu)化(默認(rèn))-O和-O1:使用能減少目標(biāo)文件大小以及執(zhí)行時(shí)間并且不會(huì)使編譯時(shí)間明顯增加的優(yōu)化.在編譯大型程序的時(shí)候會(huì)顯著增加編譯時(shí)內(nèi)存的使用.-O2:包含-O1的優(yōu)化并增加了不需要在目標(biāo)文件大小和執(zhí)行速度上進(jìn)行折衷的優(yōu)化.編譯器不執(zhí)行循環(huán)展開以及函數(shù)內(nèi)聯(lián).此選項(xiàng)將增加編譯時(shí)間和目標(biāo)文件的執(zhí)行性能.-Os:專門優(yōu)化目標(biāo)文件大小,執(zhí)行所有的不增加目標(biāo)文件大小的-O2優(yōu)化選項(xiàng).并且執(zhí)行專門減小目標(biāo)文件大小的優(yōu)化選項(xiàng).-O3:打開所有-O2的優(yōu)化選項(xiàng)并且增加-finline-functions,-funswitch-loops,-fpredictive-commoning,-fgcse-after-reloadand-ftree-vectorize優(yōu)化選項(xiàng).常用優(yōu)化選項(xiàng)05.GCC與GDBDebug選項(xiàng):在gcc編譯源代碼時(shí)指定-g選項(xiàng)可以產(chǎn)生帶有調(diào)試信息的目標(biāo)代碼,gcc可以為多個(gè)不同平臺(tái)上帝不同調(diào)試器提供調(diào)試信息,默認(rèn)gcc產(chǎn)生的調(diào)試信息是為gdb使用的,可以使用-gformat指定要生成的調(diào)試信息的格式以提供給其他平臺(tái)的其他調(diào)試器使用.常用的格式有-ggdb:生成gdb專用的調(diào)試信息,使用最適合的格式(DWARF2,stabs等)會(huì)有一些gdb專用的擴(kuò)展,可能造成其他調(diào)試器無法運(yùn)行.可以指定調(diào)試信息的等級(jí):在指定的調(diào)試格式后面加上等級(jí):如:-ggdb2等,0代表不產(chǎn)生調(diào)試信息.在使用-gdwarf-2時(shí)因?yàn)樽钤绲母袷綖?gdwarf2會(huì)造成混亂,所以要額外使用一個(gè)-glevel來指定調(diào)試信息的等級(jí),其他格式選項(xiàng)也可以另外指定等級(jí).05.GCC與GDBDebug選項(xiàng):GCC的編譯錯(cuò)誤類型C語(yǔ)法錯(cuò)誤錯(cuò)誤資訊∶文件source.c中第n行有語(yǔ)法錯(cuò)誤(syntexerrror)頭文件錯(cuò)誤錯(cuò)誤資訊∶找不到頭文件head.h(Cannotfindincludefilehead.h)檔案庫(kù)錯(cuò)誤錯(cuò)誤資訊∶連接程序找不到所需的函數(shù)庫(kù)未定義符號(hào)錯(cuò)誤資訊∶有未定義的符號(hào)(Undefinedsymbol)。GCC的編譯錯(cuò)誤類型通??梢允褂?Wall來開啟以下警告:-Waddress-Warray-bounds(onlywith-O2)-Wc++0x-compat-Wchar-subscripts-Wimplicit-int-Wimplicit-function-declaration-Wcomment-Wformat-Wmain(onlyforC/ObjCandunless
-ffreestanding)-Wmissing-braces-Wnonnull-Wparentheses
-Wpointer-sign-Wreorder-Wreturn-type-Wsequence-point-Wsign-compare(onlyinC++)-Wstrict-aliasing-Wstrict-overflow=1-Wswitch-Wtrigraphs-Wuninitialized(onlywith-O1andabove)
-Wunknown-pragmas-Wunused-function-Wunused-label-Wunused-value-Wunused-variable通??梢允褂?Wall來開啟以下警告:
unused-function:
警告聲明但是沒有定義的static函數(shù);unused-label:
聲明但是未使用的標(biāo)簽;unused-parameter:
警告未使用的函數(shù)參數(shù);unused-variable:
聲明但是未使用的本地變量;unused-value:
計(jì)算了但是未使用的值;format:
printf和scanf這樣的函數(shù)中的格式字符串的使用不當(dāng);implicit-int:
未指定類型;implicit-function:
函數(shù)在聲明前使用;char-subscripts:
使用char類作為數(shù)組下標(biāo)(因?yàn)閏har可能是有符號(hào)數(shù));unused-function:
missingbraces:
大括號(hào)不匹配;parentheses:
圓括號(hào)不匹配;return-type:
函數(shù)有無返回值以及返回值類型不匹配;sequence-point:
違反順序點(diǎn)的代碼,比如a[i]=c[i++];switch:
switch語(yǔ)句缺少default或者switch使用枚舉變量為索引時(shí)缺少某個(gè)變量的case;strict-aliasing=n:
使用n設(shè)置對(duì)指針變量指向的對(duì)象類型產(chǎn)生警告的限制程度,默認(rèn)n=3;只有在-fstrict-aliasing設(shè)置的情況下有效;unknow-pragmas:
使用未知的#pragma指令;uninitialized:
使用的變量為初始化,只在-O2時(shí)有效;missingbraces: 大括號(hào)不匹配;以下是在-Wall中不會(huì)激活的警告選項(xiàng):cast-align:
當(dāng)指針進(jìn)行類型轉(zhuǎn)換后有內(nèi)存對(duì)齊要求更嚴(yán)格時(shí)發(fā)出警告;sign-compare:
當(dāng)使用signed和unsigned類型比較時(shí);missing-prototypes:當(dāng)函數(shù)在使用前沒有函數(shù)原型時(shí);packed:
packed是gcc的一個(gè)擴(kuò)展,是使結(jié)構(gòu)體各成員之間不留內(nèi)存對(duì)齊所需的空間,有時(shí)候會(huì)造成內(nèi)存對(duì)齊的問題;padded:
也是gcc的擴(kuò)展,使結(jié)構(gòu)體成員之間進(jìn)行內(nèi)存對(duì)齊的填充,會(huì)造成結(jié)構(gòu)體體積增大.unreachable-code:
有不會(huì)執(zhí)行的代碼時(shí).inline:
當(dāng)inline函數(shù)不再保持inline時(shí)(比如對(duì)inline函數(shù)取地址);disable-optimization:
當(dāng)不能執(zhí)行指定的優(yōu)化時(shí).(需要太多時(shí)間或系統(tǒng)資源).
可以使用-Werror時(shí)所有的警告都變成錯(cuò)誤,使出現(xiàn)警告時(shí)也停止編譯.需要和指定警告的參數(shù)一起使用以下是在-Wall中不會(huì)激活的警告選項(xiàng):06.GCC交叉編譯器制作交叉編譯器一般分四步:制作交叉的二進(jìn)制工具制作不帶庫(kù)的gcc交叉編譯器用制作好的gcc交叉編譯器將所需要的庫(kù)編譯重新編譯帶庫(kù)的gcc交叉編譯器cross-3.4.1.tar.bz206.GCC交叉編譯器制作交叉編譯器一般分四步:07.小結(jié)為什么選擇GCCGCC編譯包括那些過程?中間的過程文件類型包括那些?怎樣對(duì)Gcc的編譯過程進(jìn)行優(yōu)化?如何打造自己個(gè)性化的Gcc編譯環(huán)境?GCC和GDB的關(guān)系?Gcc與arm-linux-gcc的區(qū)別?07.小結(jié)為什么選擇GCC08.time
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 60670-21:2024 EN-FR Boxes and enclosures for electrical accessories for household and similar fixed electrical installations - Part 21: Particular requirements for boxes
- 存量房屋買賣協(xié)議書
- 木門安裝工程合同
- 門面房裝修合同書(6篇)
- 房地產(chǎn)項(xiàng)目認(rèn)購(gòu)協(xié)議
- 技術(shù)改造借款合同書
- 解決某個(gè)問題的解決方案報(bào)告
- 農(nóng)業(yè)生產(chǎn)環(huán)境保護(hù)與監(jiān)測(cè)方案
- 委托投資協(xié)議合同
- 小學(xué)詞語(yǔ)聽活動(dòng)方案
- 2024-2025學(xué)年山東省濰坊市高三上學(xué)期1月期末英語(yǔ)試題
- 2025年安徽碳鑫科技有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年寒假實(shí)踐特色作業(yè)設(shè)計(jì)模板
- 過敏性肺泡炎課件
- 客運(yùn)車輛進(jìn)站協(xié)議書
- 2022-2023學(xué)年杭州市六年級(jí)下學(xué)期數(shù)學(xué)期末考試試卷及答案解析
- 公務(wù)員錄用審批表
- 重慶市住宅裝飾裝修工程質(zhì)量驗(yàn)收標(biāo)準(zhǔn)
- 部編版初中語(yǔ)文七至九年級(jí)語(yǔ)文教材各冊(cè)人文主題與語(yǔ)文要素匯總一覽表合集單元目標(biāo)能力點(diǎn)
- 新蘇教版六年級(jí)下冊(cè)《科學(xué)》全一冊(cè)全部課件(共16課)
- 幼兒園食品安全教育培訓(xùn)ppt課件模板
評(píng)論
0/150
提交評(píng)論