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

正文內(nèi)容

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

2025-06-01 18:14 本頁(yè)面
 

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