DIY自己的GNU交叉工具鏈_第1頁(yè)
DIY自己的GNU交叉工具鏈_第2頁(yè)
DIY自己的GNU交叉工具鏈_第3頁(yè)
DIY自己的GNU交叉工具鏈_第4頁(yè)
DIY自己的GNU交叉工具鏈_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、DIY自己的GNU交叉工具鏈(i386-arm) 嵌入式設(shè)備由于不具備一定的處理器能力和存儲(chǔ)空間,程序開(kāi)發(fā)一般用PC來(lái)完成,然后將可執(zhí)行文件下載到嵌入式系統(tǒng)中運(yùn)行。這是目前嵌入式程序開(kāi)發(fā)的不二選擇Host/target模式。但這引發(fā)了一個(gè)問(wèn)題:由于Host和Target的處理器體系結(jié)構(gòu)不同,我們不能直接用PC上既有的程序開(kāi)發(fā)工具,必須使用跨平臺(tái)開(kāi)發(fā)工具,即在Host上生成能在Target上運(yùn)行格式的目標(biāo)文件。與在PC上進(jìn)行程序開(kāi)發(fā)類似,嵌入式系統(tǒng)開(kāi)發(fā)也需要編譯器、鏈接器、解釋程序等。本文討論GNU跨平臺(tái)開(kāi)發(fā)工具鏈的建立,包括: ld, gas, ar, gcc, glibc.自己建立交叉編譯環(huán)

2、境是一件很頭疼的事(處理版本的依賴性, 漫長(zhǎng)的編譯過(guò)程.),如果你不想經(jīng)歷這樣的痛苦,可以選擇網(wǎng)上編譯好了的工具鏈進(jìn)行安裝.如果你用的是Debian/Ubuntu的發(fā)行版, 推薦使用Emdebian. 如果使用uClinux, 也可安裝arm-elf-tools.關(guān)于Emdebian和arm-elf-tools的更多介紹, 情看本blog的這篇文章!前提: 建立工作目錄在為目標(biāo)板開(kāi)發(fā)及定制軟件的過(guò)程中, 最好將項(xiàng)目要用到的代碼, 文檔, 及生成的目標(biāo)文件按一定的組織放在統(tǒng)一的, 結(jié)構(gòu)化的目錄中. 這里采用構(gòu)建嵌入式Linux系統(tǒng)中推薦的項(xiàng)目目錄安排: 目錄內(nèi)容bootldr 目標(biāo)板的

3、引導(dǎo)加載程序build-tools 建立跨平臺(tái)開(kāi)發(fā)工具鏈所需要用到的包和目錄debug調(diào)試工具及相關(guān)包doc 項(xiàng)目相關(guān)的文檔images 使用在目標(biāo)板上的引導(dǎo)加載程序和內(nèi)核的二進(jìn)制映像, 以及根文件系統(tǒng)kernel將在目標(biāo)板上進(jìn)行評(píng)估的各個(gè)內(nèi)核版本rootfs目標(biāo)板的內(nèi)核在運(yùn)行時(shí)看到的根文件系統(tǒng)sysapps目標(biāo)板需要用到的系統(tǒng)應(yīng)用程序tmp 進(jìn)行實(shí)驗(yàn)時(shí)或臨時(shí)文件會(huì)用到此目錄tools  放置跨平臺(tái)開(kāi)發(fā)工具鏈以及C鏈接庫(kù)上表列出的是一個(gè)完備的目錄結(jié)構(gòu), 使用于一個(gè)實(shí)際的項(xiàng)目. 本文關(guān)注的是建立跨平臺(tái)工具鏈,  它使用下面的目錄:build-tools, tools, ker

4、nel其中, 在build-tools建立下列目錄: $ mkdir build-binutils build-boot-gcc build-gcc build-glibc gcc-patch設(shè)置環(huán)境變量前面建立的項(xiàng)目空間目錄眾多, 我們可以設(shè)置一些環(huán)境變量以方便后面的工作. 你可以在命令行中設(shè)定這些環(huán)境變量. 當(dāng)然, 更簡(jiǎn)單的方法是建立一個(gè)名為RunFirst.sh的bash腳本. 將該腳本放在項(xiàng)目根目錄中, 每次登錄時(shí)運(yùn)行它既可進(jìn)入你的工作環(huán)境: $ ./RunFirst.sh#!/bin/bashexport PRJROOT=/home/zp/project/EmbeddedLinuxe

5、xport TARGET=arm-linuxexport PREFIX=$PRJROOT/toolsexport TARGET_PREFIX=$PREFIX/$TARGETexport PATH=$PREFIX/bin:$PATHcd PRJROOTPRJROOT  :指定了項(xiàng)目的根目錄.TARGET  :指定了目標(biāo)般類型, 如果要更換目標(biāo)板類型(比如換成PowerPC), 那么需要更改TARGET, 并重新編譯工具鏈.PREFIX  :為后面用到的建立工具鏈的命令提供了一個(gè)"指針", 它指向目標(biāo)板工具程序?qū)⒈话惭b的目錄.TARGET_PREF

6、IX  :指定與目標(biāo)板相關(guān)的頭文件和鏈接庫(kù)將被安裝的位置.PATH  :指定可執(zhí)行文件的位置. 當(dāng)交叉編譯工具被建立后, 它告訴Bash首先在我們自己建立的工具鏈目錄中尋找可執(zhí)行文件.執(zhí)行最后一條命令就會(huì)移動(dòng)到項(xiàng)目的根目錄.注意運(yùn)行腳本的方式: 一般是有兩種方法source file.sh或./file.sh. 如果直接調(diào)用腳本名, 當(dāng)前shell會(huì)生成一個(gè)子shell去執(zhí)行腳本, 子shell在腳本運(yùn)行完后退出. 不會(huì)對(duì)當(dāng)前shell產(chǎn)生影響. 也就是說(shuō)當(dāng)前設(shè)置的環(huán)境變量只對(duì)子shell起作用. 所以不用這種方法運(yùn)行. 而使用source. source命令使得腳本在當(dāng)前

7、shell的上下文中被執(zhí)行.本工具鏈的各組件的版本為:gcc : 2.95.3binutils : 2.10.1glibc : 2.2.3 + libc-linuxthreads-2.2.3kernel : 2.4.21 + patch-2.4.21-rmk2建立工具鏈的步驟:1. 設(shè)置內(nèi)核頭文件 2. 設(shè)置binutils 3. 設(shè)置引導(dǎo)編譯器boot-gcc 4. 設(shè)置C鏈接庫(kù)glibc 5. 設(shè)置完整的編譯起gcc 盡管將設(shè)置內(nèi)核頭文件放在第一步, 實(shí)際上要等到設(shè)置glibc時(shí)才會(huì)用到頭文件. 只需保證設(shè)置內(nèi)核頭文件在設(shè)置glibc之前即可. 如果考慮到設(shè)置工作目錄, 將設(shè)置內(nèi)核頭文件排

8、在第一步比較合適.(一)設(shè)置內(nèi)核頭文件首先進(jìn)入kernel目錄,下載linux-2.4.21內(nèi)核源碼,以及patch-2.4.21-rmk2 patch-2.4.21-rmk2是針對(duì)ARM的補(bǔ)丁, 關(guān)于它的介紹可以參考這里這里使用的2.4.21版的內(nèi)核, 如果使用2.4.18版之前(含2.4.18)的內(nèi)核, 解壓之后建立的目錄名為linux, 不帶版本號(hào). 如果使用多個(gè)版本的內(nèi)核, 最好把它linux目錄改名,添加版本號(hào). 否則如果解壓另一版本(低于2.4.19)的內(nèi)核, 會(huì)覆蓋linux目錄. 2.4.19版之后的目錄名會(huì)加上版本號(hào).解壓內(nèi)核, 并打補(bǔ)丁:$ cd linux-2.4.21$

9、 patch -p1 < ./patch-2.4.21-rmk2在內(nèi)核源碼數(shù)根目錄配置內(nèi)核:$ make ARCH=arm CROSS_COMPILE=arm-linux- menuconfigARCH=arm指定目標(biāo)系統(tǒng)的體系結(jié)構(gòu),這里是針對(duì)ARM,如果你不指定 ARCH=arm,那么會(huì)針對(duì)你的本地系統(tǒng)(X86)配置內(nèi)核.由于你沒(méi)有建立交叉編譯器, 你無(wú)法編譯內(nèi)核. 在這里只是對(duì)內(nèi)核進(jìn)行基本的配置: 在這里只需選定 目標(biāo)系統(tǒng)的處理器類型.推薦用menuconfig進(jìn)行配置, 關(guān)于配置內(nèi)核的工具, 參考本blog這篇文章的前半部分.配置結(jié)束, 退出menuconfig時(shí), 它提示你運(yùn)行

10、make dep, 其實(shí)不需要運(yùn)行它. 因?yàn)榇颂幹皇呛?jiǎn)單的配置, 不編譯內(nèi)核.配置完退出并保存, 檢查一下的內(nèi)核目錄中的 include/linux/version.h 和 include/linux/autoconf.h 文件是不是生成了, 這是編譯 glibc 是要用到的, version.h 和 autoconf.h 文件的存在,也說(shuō)明了你生成了正確的頭文件. 設(shè)置內(nèi)核頭文件此后編譯完整的gcc過(guò)程中需要用到內(nèi)核頭文件. 編譯過(guò)程中系統(tǒng)默認(rèn)在sys-linux目錄中搜索頭文件. 我們可以在配置gcc編譯時(shí)增加 -with-headers選項(xiàng)來(lái)設(shè)定包含頭文件目錄, 但這會(huì)使得頭文件被拷貝到

11、sys-linux目錄中. 比較好的方法是創(chuàng)建符號(hào)連接以避免拷貝冗余文件:1, 將內(nèi)核源碼術(shù)的asm-arm目錄和linux目錄拷貝到$TARGET_PREFIX/include目錄:$ cd $PRJROOT/kernel/linux-2.4.21$ cp -dR include/asm-arm $TARGET_PREFIX/include/asm$ cp -dR include/linux $TARGET_PREFIX/include/linux2, 在內(nèi)核源碼數(shù)建立下列符號(hào)連接:$ cd include$ ln -s asm-arm asm$ cd asm$ ln -s arch-epx

12、a arch$ ln -s proc-armv proc3, 在$TARGET_PREFIX/目錄中建立下面的符號(hào)連接:$ cd $TARGET_PREFIX$ ln -s include sys-linux4,在$TARGET_PREFIX/目錄中建立下面的符號(hào)連接:$ cd $TARGET_PREFIX/include/asm$ ln -s arch-epxa arch$ ln -s proc-armv proc(二)設(shè)置binutils此步驟不需要設(shè)置內(nèi)核頭文件!進(jìn)入build-tools目錄, 下載binutils-2.10.1(1)進(jìn)入build-binutils目錄配置和編譯bin

13、utils$./binutils-2.10.1/configure -target=$TARGET -prefix=$PREFIX-target 選項(xiàng)是指出我們生成的是 arm-linux 的工具,-prefix 是指出我們可執(zhí)行文件安裝的位置。注意: 配置binutils需要用到flex, 若沒(méi)有安裝flex, 配置過(guò)程中會(huì)提示:././binutils-2.10.1/binutils/configure: line 1945: flex: command not foundchecking for flex. lexchecking for yywrap in -ll. nocheckin

14、g lex output file root. ././binutils-2.10.1/binutils/configure: line 2033: lex: command not foundconfigure: error: cannot find output from lex; giving up需要安裝flex, 在Debian/Ubuntu中,直接運(yùn)行:$ sudo apt-get install flex下面是從源代碼安裝的方法:-先安裝lex,到GNU網(wǎng)站:在編譯flex的過(guò)程中,make又提示錯(cuò)誤:make: yacc: Command not foundmake: * pa

15、rse.c Error 127需要yacc,于是下載Berkeley的byacc源碼。so,安裝binutils時(shí),若需要flex, yacc,執(zhí)行下列步驟1,獲得yacc, flex源碼2,安裝yacc: ./configure -> make -> make install3,安裝flex: ./confugre -> make -> make install    完成后,再繼續(xù)安裝binutils:1,./configure -target=., -prefix=.2,make3,make install-(2) 前面的配置產(chǎn)生Ma

16、kefile之后, 只需運(yùn)行:$ make$ make installOK, 前面已經(jīng)安裝好了binutils, 下面我們看看安裝了哪些程序:$ ls $PREFIX/binarm-linux-addr2line  arm-linux-c+filt  arm-linux-nm       arm-linux-ranlib   arm-linux-stringsarm-linux-ar         arm-linu

17、x-gasp     arm-linux-objcopy  arm-linux-readelf  arm-linux-striparm-linux-as         arm-linux-ld       arm-linux-objdump  arm-linux-size關(guān)于上面的命令, 可以參看本人blog的GNU binutils筆記(三)設(shè)置初始編譯器(boot-gcc)此步驟不

18、需要設(shè)置內(nèi)核頭文件!進(jìn)入build-tools目錄, 下載gcc-2.95.3, 并到LinuxFromScratch網(wǎng)站下載這三個(gè)補(bǔ)?。篻cc-2.95.3-2.patchgcc-2.95.3-no_fixinc-1.patch    gcc-2.95.3-returntype_fix-1.patch 解壓GCC,并打補(bǔ)?。?$cd gcc-2.95.3$patch -p1< ./gcc-patch/gcc-2.95.3-2.patch$patch -p1< ./gcc-patch/gcc-2.95.3-no_fixinc-1.patch$patch

19、 -p1< ./gcc-patch/gcc-2.95.3-returntype_fix-1.patchecho timestamp > gcc/cstamp-h.in如果你用的是Ubuntu默認(rèn)的gcc(既安裝build-essential中的gcc, 該gcc的版本目前是4.0.2). 在編譯時(shí)候會(huì)提示"invalid lvalue in increment"錯(cuò)誤. 最好使用gcc-3.3.Ubuntu中安裝gcc-3.3: $ sudo apt-get install gcc-3.3只有調(diào)用不同版本的gcc, 只需: $ export CC=gcc-3.3對(duì)

20、t-linux文件作一些修改:-修改$PRJROOT/gcc-2.95.3/gcc/config/arm/t-linux,把TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer -fPIC這一行改為TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D_gthr_posix_h注意是arm目錄下的!在/gcc/config目錄下也有一個(gè)t-linux文件,別弄混淆了。-上面的修改方案來(lái)自IBM developerworks上的“如何為嵌入式開(kāi)發(fā)建立交叉編譯環(huán)境”. 但我在編譯過(guò)

21、程中老是碰見(jiàn)"libgcc1.S:438: asm/unistd.h: No such file or directory"這樣的錯(cuò)誤. 原先以為是本地GCC的問(wèn)題, 用gcc-2.95.3, gcc-3.3等編譯, 還是如此. 又以為需要在這里設(shè)置內(nèi)核頭文件, 拷貝, 建立符號(hào)連接. 什么方法都試過(guò), 還是不行. 我KAO.實(shí)際上, 應(yīng)該這樣修改t-linux: 在TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC語(yǔ)句之前添加"T_CFLAGS = -Dinhibit_libc -D_gthr_posix_h&q

22、uot;成為:T_CFLAGS = -Dinhibit_libc -D_gthr_posix_hTARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC-Dinhibit_libc等同于在命令中加上"-with-newlib", 它告訴配置工具不要使用glibc, 因?yàn)楫?dāng)前的glibc并不是針對(duì)目標(biāo)板的. 從字面上看, 它是告訴配置工具"使用一個(gè)新的c庫(kù)來(lái)作為目標(biāo)板的C鏈接庫(kù). 然而當(dāng)前我們并沒(méi)有可用的C鏈接庫(kù), 所以這個(gè)選項(xiàng)只是讓GCC能夠正確編譯, 生成一個(gè)初始編譯器而已. 隨后可以選擇C鏈接庫(kù).-D_gthr_po

23、six_h我不知道是什么意思, 反正如果不更改上面的語(yǔ)句, 就會(huì)有如下的錯(cuò)誤:././gcc-2.95.3/gcc/gthr-posix.h:37: pthread.h: No such file or directory可能是去掉posix thread支持吧.配置$ cd $PRJROOT/build-tools/build-boot-gcc/$ ./gcc-2.95.3/configure -target=$TARGET -prefix=$PREFIX -without-headers -enable-language=c -disable-threads-target, -prefix

24、 和配置 binutils 的含義是相同的. -without-headers 就是指不需要頭文件, 因?yàn)槭墙徊婢幾g工具, 不需要本機(jī)上的頭文件. -with-newlib在前面已經(jīng)介紹了, 即便更改了t-linux文件, 也可以在這里設(shè)置-with-newlib. -enable-languages=c是指我們的 boot-gcc 只支持 c 語(yǔ)言. -disable-threads 是去掉 thread 功能, 這個(gè)功能需要 glibc 的支持.如果用的比較老版本gcc (比如gcc-2.95.3) 在配置過(guò)程中會(huì)提示這樣的錯(cuò)誤:Config.guess failed to determi

25、ne the host type.  You need to specify one.這是由于config.guess, config.sub版本太老. config.guess是用來(lái)檢測(cè)host類型的, 運(yùn)行它就能得知host類型.解決方法: 到/pub/pub/gnu/config/下載新版的config.guess和config.sub: /cgi-bin/viewcvs/*checkout*/config/config/config.guess /cgi-b

26、in/viewcvs/*checkout*/config/config/config.sub用它們替換gcc-2.95.3目錄下的老文件.現(xiàn)在運(yùn)行 $./config.guess:i686-pc-linux-gnu編譯, 安裝$ make all-gcc$ make install-gcc注意:為什么不用 all-in-one 的 gcc-$VGCC.tar.gz 呢? all-in-one 的 gcc 包里面有 chill, fortran, java 等語(yǔ)言的編譯器,雖然在下面 configure 時(shí)指定 -enable-languages=c,但編譯時(shí)還是把所有的都編譯一便,這不是我們需

27、要的,而且它也總會(huì)有錯(cuò)誤。因此我們只編譯 C 語(yǔ)言的編譯器。后面第二次編譯的時(shí)候也是這個(gè)問(wèn)題,我們只編譯 C 和 C+ 的編譯器。(四) 設(shè)置C鏈接庫(kù)glibc進(jìn)行到這一步的時(shí)候, 需要保證正確地設(shè)置了內(nèi)核頭文件, 因?yàn)間libc要用到內(nèi)核頭文件!進(jìn)入build-tools目錄, 下載glibc-2.2.3以及glibc-linuxthreads-2.2.3.tar.gz 解壓glibc, 并打補(bǔ)丁$ cd $PRJROOT/build-tools$ tar -xvzf glibc-2.2.3.tar.gz$ tar -xzvf glibc-linuxthreads-2.2.3.tar.gz

28、-directory=glibc-2.2.3配置glibc$ cd build-glibc$ CC=arm-linux-gcc ./glibc-2.2.3/configure -host=$TARGET  -prefix="/usr"-enable-add-ons -with-headers=$TARGET_PREFIX/include CC=arm-linux-gcc 把 CC 變量設(shè)成你剛編譯完的boostrap gcc, 用它來(lái)編譯你的glibc.-host=$TARGET 告訴該鏈接庫(kù)在目標(biāo)系統(tǒng)上執(zhí)行, 而非在本地主機(jī).-prefix="/usr

29、" 告訴配置腳本在目標(biāo)板的根文件系統(tǒng)中g(shù)libc的位置.-enable-add-ons 告訴配置腳本使用我們下載的附加包. 已經(jīng)將glibc-linuxthreads-2.2.3放入了 glibc 源碼目錄中. 由于我們只添加了一個(gè)附加包, 這里-enable-add-ons等價(jià)于 -enable-add-ons=linuxthreads. (如果使用glibc-2.1.x, 需要使用glibc-crypt附加包, 就得使用: -enable-add-ons=linuxthreads, crypt選項(xiàng)).-with-headers 告訴 glibc 我們的linux 內(nèi)核頭文件的目錄

30、位置.編譯并安裝glibc$ make$ make install_root=$TARGET_PREFIX prefix="" installinstall_root 指定了安裝鏈接庫(kù)組件的目錄, 將glibc安裝到與我們項(xiàng)目相關(guān)的目錄, 而非/usr目錄.如果不指定prefix="", 那么glibc會(huì)被安裝到$TARGET_PREFIX/usr/lib目錄中. 指定prefix使glibc被安裝到 $TARGET_PREFIX/lib目錄.修改$TARGET_PREFIX/lib目錄中的libc.so$ cd $TARGET_PREFIX/lib$

31、cat libc.solibc.so的內(nèi)容:/* GNU ld script   Use the shared library, but some functions are only in   the static library, so try that secondarily.  */GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a )將/lib/絕對(duì)目錄去掉, 既將"GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a )"改為:GROUP

32、( libc.so.6 libc_nonshared.a )由于嵌入式系統(tǒng)存儲(chǔ)功能的限制, 使用glibc生成的可執(zhí)行文件比較大, 可以使用uClibc. 文末介紹了使用uClibc.(五) 建立完整的GCC前面建立的boot-gcc只支持c, 而且不能使用glibc運(yùn)行時(shí)庫(kù), 現(xiàn)在我們已經(jīng)可以建立完整的gcc, 支持c, c+, 運(yùn)行時(shí)庫(kù).配置GCC$ cd $PRJROOT/build-tools/build-gcc$ ./gcc-2.95.3/configure -target=$TARGET -prefix=$PREFIX -enable-languages=c,c+ 編譯并安裝完整的

33、GCC$ make all$ make install這里安裝的gcc將覆蓋原來(lái)的gcc.(六) 安裝uClibc到這里下載uClibc庫(kù). 當(dāng)前最新版是0.9.28. 下載uClibc包, 保存到build-tools目錄. 使用uClibc可以不考慮gnu工具版本依賴問(wèn)題, 找最新的uClibc用.將它解壓, 進(jìn)入uClibc-0.2.98目錄, 對(duì)uClibc進(jìn)行配置. 注意: uClibc不支持在自身目錄之外操作. 所以這里的配置, 安裝不要新建安裝目錄, 就在uClibc本身的目錄中進(jìn)行.配置uClibc$ cd $PRJROOT/build-tools/uClibc-0.2.98$

34、 make CROSS=arm-linux- menuconfig使用menuconfig工具進(jìn)行配置, 這和linux內(nèi)核配置很相. 實(shí)際上uClibc的配置系統(tǒng)來(lái)自Roman Zippel的內(nèi)核配置系統(tǒng).CROSS設(shè)置為"arm-linux-". 進(jìn)入熟悉的menuconfig界面后, 需要進(jìn)行一些設(shè)置. 我有一塊ARM9的開(kāi)發(fā)板, 所以這里的配置都針對(duì)ARM920T. 這里只列出了部分設(shè)置. 具體可參考menuconfig中的幫助信息.Target Architecture (arm)Target Architecture Features and Options&#

35、160; ->Target Processor Type (Arm 920T) Target Processor Endianness (Little Endian)* Target CPU has a memory management unit (MMU)* Enable floating point number support* Target CPU has a floating point unit (FPU)*   Enable full C99 math library support($(PRJROOT)/kernel/linux-2.4.21) Li

36、nux kernel header location 這里的內(nèi)核頭文件位置設(shè)置為先前包含內(nèi)核頭文件的路徑. General Library Settings  ->* Generate Position Independent Code (PIC)要想使用動(dòng)態(tài)庫(kù), 必須選上PIC.* Enable support for shared libraries如果你想將所有的應(yīng)用程序靜態(tài)連接, 那么你可以關(guān)閉動(dòng)態(tài)庫(kù)支持. 但如果以后要用動(dòng)態(tài)庫(kù)時(shí), 又得重新編譯uClibc了(glibc也是如此). 最好選上對(duì)動(dòng)態(tài)庫(kù)的支持. 你可以在gcc選項(xiàng)中加上-static來(lái)使用靜態(tài)庫(kù).

37、0;Library Installation Options  -> (/lib) Shared library loader path指定共享庫(kù)的目錄: 一般為/lib. 這樣uClibc安裝后將把共享庫(kù)安裝到/lib目錄.(/) uClibc runtime library directory ($(PRJROOT)/tools/uclibc) uClibc development environment directory.如同用menuconfig配置內(nèi)核, 所有的配置都位于.config文件中. 將它刪除就能恢復(fù)到缺省配置.編譯, 安裝uClibc$ make CROSS=arm-linux- $ make CROSS=arm-linux- PREFIX="" install所有的uClibc組件將被安裝到$PRJROOT/tools/uclib

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論