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

正文內(nèi)容

第3章程序設(shè)計(jì)基礎(chǔ)-展示頁

2025-07-29 11:01本頁面
  

【正文】 elfgcc –I ./ –I/include –c I ? I以前 用 I指定的頭文件搜索目錄只對 include―file‖ 有效,對 includefile 無效; ? I以后 指定的頭文件搜索目錄對以上兩種形式的頭文件都有效。 通過此選項(xiàng)可以使用戶頭文件先于系統(tǒng)頭文件被搜索到。 前一種形式的 路徑搜索順序 是:當(dāng)前目錄、指定的搜索路徑; 后一種形式只搜索指定路徑。 例如 : 將 : armelfgcc –S –o E 只對源文件進(jìn)行預(yù)處理并且缺省輸出到標(biāo)準(zhǔn)輸出。 例如,將 放于文件 : armelfgcc –S –o c 將輸入的源文件編譯成目標(biāo)文件。 x language 其中的 language可為: ? c ——C源文件 ? c++ ——C++源文件 ? cheader ——C頭文件 ? cppoutput ——經(jīng)過預(yù)處理后的 C源文件 ? c++cppoutput ——經(jīng)過預(yù)處理后的 C++源文件 ? assembler ——不需要預(yù)處理的匯編文件 ? assemblerwithcpp ——需要預(yù)處理的匯編文件 例如,編譯一個(gè)不需要預(yù)處理的 C程序: armelfgcc –c –g –x cppoutput x none 如果 x后面未跟任何參數(shù),則按照文件的后綴名做相應(yīng)處理。 armelfgcc具有豐富的命令選項(xiàng),控制編譯的各個(gè)階段,滿足用戶的各種編譯需求 armelfgcc [options] file… 在命令 armelfgcc后面跟一個(gè)或多個(gè)選項(xiàng),選項(xiàng)間用空格隔開,然后跟一個(gè)或多個(gè)目標(biāo)文件。 ? 然后調(diào)用 cc1將預(yù)處理后的程序編譯成匯編代碼 。 圖 31展示了該編譯過程: C/C++交叉編譯器 armelfgcc 概述 armelfgcc是編譯的前端程序,它通過調(diào)用其他程序來實(shí)現(xiàn)將程序源文件編譯成目標(biāo)文件。 armelfnm程序用于顯示文件中的符號信息。 6. 其他實(shí)用程序 目標(biāo)文件格式轉(zhuǎn)換工具 armelfobjcopy支持的文件格式有 Hrecord、Srecord、 ABS、 BIN、 COFF、 ELF。在一個(gè)程序中,可執(zhí)行文件依賴于目標(biāo)文件 ,而目標(biāo)文件依賴于源文件。要使用 make,首先要編寫 makefile。 采用函數(shù)庫文件,應(yīng)用程序能夠從該文件中自動(dòng)裝載要參考的函數(shù)模塊,同時(shí)將應(yīng)用程序中頻繁調(diào)用的函數(shù)放入函數(shù)庫文件中,易于應(yīng)用程序的開發(fā)管理。許多鏈接器遇到第一個(gè)錯(cuò)誤即放棄鏈接,而 armelfld只要有可能都繼續(xù)執(zhí)行,幫助用戶識別其它錯(cuò)誤,有時(shí)甚至能獲得輸出代碼。 假如輸入文件是一個(gè)函數(shù)庫, armelfld會(huì)自動(dòng)從函數(shù)庫裝載被其它目標(biāo)模塊參考的函數(shù)模塊。 它也產(chǎn)生交叉參考列表,顯示參考每個(gè)全局符號的目標(biāo)模塊。 該目標(biāo)程序是 ELF格式,并且可以包含調(diào)試信息。 armelfas產(chǎn)生一個(gè)交叉參考表和一個(gè)標(biāo)準(zhǔn)的符號表,產(chǎn)生的代碼和數(shù)據(jù)能夠放在多個(gè)區(qū) (Section)中。 armelfgcc具有豐富的命令選項(xiàng),可以控制編譯的各個(gè)階段,滿足用戶的各種編譯需求。 GNU GCC的基本功能包括: ?輸出預(yù)處理后的 C/C++源程序(展開頭文件和替換宏) ?輸出 C/C++源程序的匯編代碼 ?輸出二進(jìn)制目標(biāo)文件 ?生成靜態(tài)庫 ?生成可執(zhí)行程序 ?轉(zhuǎn)換文件格式 GCC 組成 1. C/C++交叉編譯器 armelfgcc armelfgcc是編譯的前端程序,它通過調(diào)用其他程序來實(shí)現(xiàn)將程序源文件編譯成目標(biāo)文件的功能。第 3 章 程序設(shè)計(jì)基礎(chǔ) GNU集成編譯環(huán)境 GCC(GNU Compiler Collection)是一種面向嵌入式領(lǐng)域、支持多種編程語言、支持多種 CPU的交叉編譯工具。 本章主要介紹: ? GCC編譯過程 ? C/C++交叉編譯器 armelfgcc ? 交叉匯編器 armelfas ? 交叉連接器 armelfl d ? 工程管理器 make ? 匯編語言編程 ? 混合編程 GNU GCC簡介 GNU GCC是一套面向嵌入式領(lǐng)域的交叉編譯工具,支持多種編程語言、多種優(yōu)化選項(xiàng)并且能夠支持分步編譯、支持多種反匯編方式、支持多種調(diào)試信息格式 , 目前支持 X8ARM StrongARM、 PPC4XX、MPC8XX、 MIPS R3000等多種 CPU。 編譯時(shí),它首先調(diào)用預(yù)處理程序 (cpp)對輸入的源程序進(jìn)行處理,然后調(diào)用 cc1 將預(yù)處理后的程序編譯成匯編代碼,最后由 armelfas將匯編代碼編譯成目標(biāo)代碼。 2. 匯編器 armelfas armelfas將匯編語言程序轉(zhuǎn)換為ELF (Executable and Linking Format,執(zhí)行時(shí)鏈接文件格式 )格式的可重定位目標(biāo)代碼,這些目標(biāo)代碼同其它目標(biāo)模塊或函數(shù)庫易于定位和鏈接。 3. 連接器 armelfld armelfld根據(jù)鏈接定位文件 Linkcmds中的代碼區(qū)、數(shù)據(jù)區(qū)、 BSS區(qū)和棧區(qū)等定位信息,將可重定位的目標(biāo)模塊鏈接成一個(gè)單一的、絕對定位的目標(biāo)程序。 armelfld會(huì)產(chǎn)生一個(gè)內(nèi)存映象文件,該文件顯示所有目標(biāo)模塊、區(qū)和符號的絕對定位地址。 armelfld支持將多個(gè)目標(biāo)模塊鏈接成一個(gè)單一的、絕對定位的目標(biāo)程序,也能夠依此對目標(biāo)模塊進(jìn)行鏈接,這個(gè)特性稱為 增量鏈接(Incremental Linking)。 armelfld與其它鏈接程序 相比 ,能提供更有幫助的診斷信息。 4. 庫管理器 armelfar armelfar將多個(gè)可重定位的目標(biāo)模塊歸檔為一個(gè)函數(shù)庫文件。 armelfar支持 ELF格式的函數(shù)庫文件 . 5. 工程管理器 MAKE Make是用于自動(dòng)編譯、鏈接程序的實(shí)用工具 ,使用 make后就不需要手工的編譯每個(gè)程序文件。 Makefile描述程序文件之間的依賴關(guān)系,并提供更新文件的命令。如果 makefile文件存在 ,每次修改完源程序后,用戶通常所需要做的事情就是在命令行敲入“ make‖,然后所有的事情都由 make來完成。例如,它能夠?qū)?ELF格式文件轉(zhuǎn)換為其它格式的文件,如 intel Hrecord格式、Motorola Srecord等。 GCC編譯程序的基本過程 GCC編譯程序的 基本過程 如下: armelfgcc根據(jù)輸入文件的后綴來確定文件的類型,然后根據(jù)用戶的編譯選項(xiàng)(包括優(yōu)化選項(xiàng)、調(diào)試信息選項(xiàng)等)將其編譯成相應(yīng)的匯編臨時(shí)文件(后綴為 .s); armelfas將該匯編文件編譯成目標(biāo)文件(后綴為 .o); armelfld 根據(jù)用戶的鏈接選項(xiàng)(包括指定鏈接命令文件等)將目標(biāo)文件和各種庫鏈接起來生成可執(zhí)行文件。 ? 編譯時(shí)它首先調(diào)用預(yù)處理程序 (cpp)對輸入的源程序進(jìn)行處理 。 ? 最后由 armelfas將匯編代碼編譯成目標(biāo)代碼。 例如,將 編譯成目標(biāo)文件 并且生成調(diào)試信息: armelfgcc –g –c –o 輸出控制選項(xiàng): ?c 將輸入的源文件編譯成目標(biāo)文件 ?S 將 C/C++文件生成匯編文件 ?o file 將輸出內(nèi)容存于文件 file ?pipe 在編譯的不同階段之間采用管道通訊方式 ?v 打印出編譯過程中執(zhí)行的命令 ?x language 說明文件的輸入類型為 language C語言選項(xiàng): ansi 支持所有 ANSI C程序 警告選項(xiàng): ? w 關(guān)閉所有警告 ? Wall 打開所有警告 ? Wimplicit 如果有隱含申明,顯示警告信息 ? Wnoimplicit 不顯示對隱含申明的警告 調(diào)試選項(xiàng): g 在文件中產(chǎn)生調(diào)試信息 (調(diào)試信息的文件格式有 stabs、 COFF、 XCOFF、 DWARF) 優(yōu)化選項(xiàng): ? O0 不優(yōu)化 ? O1 一級優(yōu)化 ? O2 二級優(yōu)化 ? O3 三級優(yōu)化 預(yù)處理選項(xiàng): ? E 運(yùn)行 C的預(yù)處理器 ? C 在運(yùn)用 E進(jìn)行預(yù)處理時(shí)不去掉注釋 ? D macro 定義宏 macro為 1 ? D macro=defn 定義宏 macro為 defn 匯編選項(xiàng): Wa, option 將選項(xiàng) option傳遞 給匯編器 搜索路徑選項(xiàng): I dir 設(shè)置搜索路徑為 dir I 指定只對 include file,有效的頭文件搜索目錄 3. 源文件類型的識別 armelfgcc能夠自動(dòng)根據(jù)文件名后綴識別文件類型 . 文件名后綴 和 文件類型 的對應(yīng)關(guān)系如下: ? *.c ——C源文件 ? *.i ——經(jīng)過預(yù)處理后的 C源文件 ? *.h ——C頭文件 ? *.ii ——經(jīng)過預(yù)處理后的 C++源文件 ? *.cc ——C++源文件 ? *.cxx ——C++源文件 ? *.cpp ——C++源文件 ? *.C ——C++源文件 ? *.s ——不需要預(yù)處理的匯編文件 ? *.S ——需要預(yù)處理的匯編文件 此外,用戶可通過 x language說明文件的輸入類型,此時(shí)可以不用以上的后綴規(guī)則。 命令使用 o file 將輸出內(nèi)容存于文件 file,僅適用于只有一個(gè)輸出文件時(shí)。 例如,將 : armelfgcc –c –o 3.將 C/C++文件生成匯編文件 S 將 C/C++文件生成匯編文件。 例如,對 屏幕: armelfgcc –E 例如,對 文件 : armelfgcc –E –o 5.設(shè)置頭文件搜索路徑 頭文件的 引用 有兩種形式: 一種是 include―filename‖, 一種是 include filename。 I dir 將目錄 dir添加到頭文件搜索目錄列表的第一項(xiàng)。 如果同時(shí)用 I選項(xiàng)添加幾個(gè)目錄,目錄被搜索時(shí)的優(yōu)先級順序?yàn)閺淖蟮接摇? 此外, I會(huì)禁止對當(dāng)前目錄的隱含搜索,不過用戶可以通過使用“ I.‖使能對當(dāng)前目錄的搜索。 ? 在以下命令行中,只能搜索到 ,而不 能搜索到 : armelfgcc –I./include/test –I– –I./include –c ?而在以下命令行中 ,可以搜索到需要的兩個(gè)頭文件 : armelfgcc –I– –I./include –I./include/test –c ?如果要搜索到 ,必須要添加對當(dāng)前目錄的搜索 : armelfgcc –I– –I. –I./include –I./include/test –c ?實(shí)質(zhì)上,上述編譯命令等價(jià)于 : armelfgcc –I. –I./include –I./include/test –c 與 armelfgcc –I./include –I./include/test –c 6.控制警告產(chǎn)生 用戶可以使用以 W開頭的不同選項(xiàng)對特定警告進(jìn)行設(shè)定。 例如 : ? 如果有隱含申明,顯示警告信息: armelfgcc –c –Wimplicit ? 不顯示對隱含申明的警告: armelfgcc –c –Wno–implicit 常用的警告選項(xiàng)有: ? w 關(guān)閉所有警告信息。 7.實(shí)現(xiàn)優(yōu)化 優(yōu)化的 主要目的 是使編譯生成的代碼的尺寸更小、運(yùn)行速度更快。 armelfgcc支持多種優(yōu)化選項(xiàng),總體上劃分為 三級優(yōu)化 : 1. O1 可以部分減小代碼尺寸,對運(yùn)行速度有一定的提高。 2. O2 除了解循環(huán)、函數(shù)插裝和靜態(tài)變量優(yōu)化,幾乎包含 armelfgcc所有優(yōu)化選項(xiàng)。 3. O3 包含 O2的所有優(yōu)化,并且還包含了解循環(huán)、函數(shù)插裝和靜態(tài)變量優(yōu)化。 8.在命令行定義宏 D macro 定義宏 macro為 1。 例如 : ? 編譯 RUN_CACHE 值為1: armelfgcc –c –D RUN_CACHE ? 編譯
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1