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

正文內容

linux編程新修改ppt課件(編輯修改稿)

2025-06-01 18:14 本頁面
 

【文章內容簡介】 languages=c 執(zhí)行 make install,將生成一個最簡單的 gcc。由于編譯整個 gcc是需要目標機的 glibc庫的,它現(xiàn)在還不存在,因此需要首先生成一個最簡單的 gcc,它只需要具備編譯目標機 glibc庫的能力即可。 ( 4)交叉編譯 glibc。 由于這一步驟生成的代碼是針對目標機 cpu的,因此它屬于一個交叉編譯過程。又因為該過程要用到 Linux內核頭文件,默認路徑為 $PREFIX/armlinux/syslinux,因而需要在 $PREFIX/armlinux中建立一個名為 syslinux的軟連接,使其指向內核頭文件所在的 include目錄;也可以在接下來要執(zhí)行的 configure命令中使用 withheaders參數(shù)指定 linux內核頭文件的實際路徑。 configure的運行參數(shù)設置如下,因為是交叉編譯,所以要將編譯器變量 CC設為 armlinuxgcc: CC=armlinuxgcc ./configure prefix=$PREFIX/armlinux host=armlinux enableaddons 最后,按以上配置執(zhí)行 configure和 make install,glibc的交叉編譯過程就算完成了,這里需要指出的是,glibc的安裝路徑設置為 $PREFIXARCH=arm/armlinux,如果此處設置不當,第二次編譯 gcc時可能找不到 glibc的頭文件和庫。 ( 5)第二次編譯 gcc。 運行 configure,參數(shù)設置為 prefix=$PREFIX target=armlinux enablelanguages=c,c++。 運行 make install。 到此為止整個交叉編譯環(huán)境就完全生成了。 交叉編譯工具做完后,簡單驗證一下。首先用文字輸入軟件建立一個 : include int main(void) { printf(hello world\n)。 return 0。 } 然后在命令行執(zhí)行: $armlinuxgcc o helloworld $file helloworld 如果輸出以下信息,說明成功建立了編譯工具。 helloworld: ELF 32bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), not stripped Linux及開發(fā)工具的使用 GNU提供的編譯工具包括匯編器 as、 C編譯器 gcc、 C++編譯器g++、鏈接器 ld和二進制轉換工具 objcopy?;?ARM平臺的工具分別為 armlinuxas、 armlinuxgcc、 armlinuxg++、 armlinuxld和 armlinuxobjcopy。 GNU的所有開發(fā)工具都可以從,基于 ARM的工具可以從 得。 GNU工具的開發(fā)流程如下:編寫 C、 C++語言或匯編源程序,用gcc或 g++生成目標文件,編寫鏈接腳本文件,用鏈接器生成最終目標文件( elf格式),用二進制轉換工具生成可下載的二進制代碼。 Linux下的 GNU調試工具主要是 gdb、 gdbserver和kgdb。其中 gdb和 gdbserver可完成對目標板上 Linux應用程序的遠程調試。 gdbserver是一個很小的應用程序,運行于目標板上,可監(jiān)控被調試進程的運行,并通過串口與上位機上的 gdb通信。開發(fā)者可以通過上位機的 gdb輸入命令,控制目標板上進程的運行,查看內存和寄存器的內容。 ARM處理器的支持,在初始化時加入 target==arm參數(shù)可直接生成基于 ARM平臺的 gdbserver。 gdb工具可以從 gcc編譯器的使用 gcc最基本的用法是: gcc [options] file... 其中的 option是以“ ”開始的各種選項, file是相關的文件名。在使用 gcc的時候,必須要給出必要的選項和文件名。 gcc的整個編譯過程分別是:預處理,編譯,匯編和鏈接。 gcc編譯器幾個最常用的選項: ? o表示要求編譯器生成指定文件名的可執(zhí)行文件; ? c表示只要求編譯器進行編譯,而不要進行鏈接,生成以源文件的文件名命名但把其后綴由 .c或 .cc變成 .o的目標文件; ? g要求編譯器在編譯的時候提供以后對程序進行調試的信息; ? E表示編譯器對源文件只進行預處理就停止,而不做編譯、匯編和鏈接; ? S表示編譯器只進行編譯,而不做匯編和鏈接; ? O是編譯器對程序提供的編譯優(yōu)化選項,在編譯的時候使用該選項,可以使生成的執(zhí)行文件的執(zhí)行效率提高; ? Wall指定產(chǎn)生全部的警告信息。 $ gcc o hello gcc編譯器就會生成一個 hello的可執(zhí)行文件。在 當前目錄下執(zhí)行 ./hello就可以看到程序的輸出結果,在屏幕上打印出“ Hello the world”的字符串來。 GNU編譯器生成的目標文件默認格式為 elf( executive linked file)格式,這是 Linux系統(tǒng)所采用的可執(zhí)行鏈接文件的通用文件格式。 elf格式由若干個段( section)組成,如果沒有特別指明,由標準 c源代碼生成的目標文件中包含以下段: ? .text(正文段)包含程序的指令代碼, ? .data(數(shù)據(jù)段)包含固定的數(shù)據(jù),如常量,字符串等, ? .bss(未初始化數(shù)據(jù)段)包含未初始化的變量和數(shù)組等。 Makefile文件和 Make命令 Makefile文件描述了目標文件之間的依賴關系,以及指定編譯過程中使用的工具。一個工程中的源文件按其類型、功能、模塊分別放在若干個目錄中。 Makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯。 Makefile就像一個 Shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。Makefile帶來的好處就是“自動化編譯”,一旦寫好,只需要一個 Make命令,整個工程完全自動編譯,極大地提高了軟件開發(fā)的效率。 Makefile的作用是根據(jù)配置的情況,構造出需要編譯的源文件列表,然后分別編譯,并把目標代碼鏈接到一起,最終形成可執(zhí)行的二進制文件。 Makefile中一般包含如下內容: ? 需要由 make工具創(chuàng)建的項目,通常是目標( target)文件和可執(zhí)行文件。 ? 要創(chuàng)建的項目依賴于哪些文件。 ? 創(chuàng)建每個項目時需要運行的命令。 例如: : g++ c g 從上面的例子可以看出,第一行指定 為目標,并且依賴于 。隨后的行指定了如何從目標所依賴的文件建立目標。當 ,則 make工具可自動重新編譯 ,如果在前后兩次編譯之間, 修改,而且 ,就沒有必要重新編譯。 1. Makefile中的變量 頂層 Makefile定義并向環(huán)境中輸出了許多變量,為各個子目錄下的 Makefile傳遞一些信息。有些變量,比如, SUBDIRS,不僅在頂層 Makefile中定義并且賦初值,而且在arch/arm/Makefile還做了擴充。常用的變量有以下幾類: ? 版本信息 版本信息有 VERSION、 PATCHLEVEL、 SUBLEVEL、EXTRAVERSION和 KERNELRE LEASE等變量,用來定義當前內核的版本。比如, VERSION = 2, PATCHLEVEL = 4,SUBLEVEL = 18, EXTRAVERSION = rmk7,共同構成內核的發(fā)行版本 KERNELRELEASE: 。 ? CPU體系結構: ARCH 在頂層 Makefile的開頭,用 ARCH定義目標 CPU的體系結構,比如, ARCH:=arm。許多子目錄的 Makefile中,要根據(jù) ARCH的定義選擇編譯源文件的列表。 ? 路徑信息: TOPDIR和 SUBDIRS TOPDIR定義了 Linux內核源代碼所在的根目錄。SUBDIRS定義了一個目錄列表,在編譯內核或模塊時,頂層 Makefile就是根據(jù) SUBDIRS來決定進入哪些子目錄。SUBDIRS的值取決于內核的配置。 ? 內核組成信息: HEAD, CORE_FILES,NETWORKS, DRIVERS, LIBS。 Linux內核文件 vmlinux是由以下規(guī)則產(chǎn)生的: vmlinux: $(CONFIGURATION) init/ init/ linuxsubdirs $(LD) $(LINKFLAGS) $(HEAD) init/ init/ \ startgroup \ $(CORE_FILES) \ $(DRIVERS) \ $(NETWORKS) \ $(LIBS) \ endgroup \ o vmlinux ? 編譯信息: CPP, CC, AS, LD, AR, CFLAGS,LINKFLAGS 在 ,具體到特定的場合,需要明確給出編譯環(huán)境,編譯環(huán)境就是在以上的變量中定義的。針對交叉編譯的要求,定義了 CROSS_COMPILE。比如: CROSS_COMPILE = armlinux CC = $(CROSS_COMPILE)gcc LD = $(CROSS_COMPILE)ld ...... 由于 CROSS_COMPILE定義了交叉編譯器前綴 armlinux,表明所有的交叉編譯工具都是以 armlinux開頭的,所以在各個交叉編譯器工具之前,都加入了 $(CROSS_COMPILE),以組成一個完整的交叉編譯工具文件名,比如, armlinuxgcc。 ? 配置變量 CONFIG_* .config文件中有許多的配置變量等式,用來說明用戶配置的結果。例如, CONFIG_MODULES=y表明用戶選擇了 Linux內核的模塊功能。 .config被頂層 Makefile包含后,就形成許多的配置變量,每個配置變量具有確定的值: y表示本編譯選項對應的內核代碼被靜態(tài)編譯進 Linux內核; m表示本編譯選項對應的內核代碼被編譯成模塊; n表示不選擇此編譯選項;如果沒有賦值,那么配置變量的值為空。 2. Makefile共用的編譯規(guī)則。 Linux把共用的編譯規(guī)則統(tǒng)一放置到 ,并在各自的 Makefile中通過語句“ include ”包含 。這樣就避免了在多個Makefile中重復同樣的規(guī)則。 ,最為重要的是編譯、鏈接列表變量。 ? O_OBJS、 L_OBJS、 OX_OBJS和 LX_OBJS:這些
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1