




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式Linux系統(tǒng)項(xiàng)目工程管理 課程安排 nLinuxLinux項(xiàng)目工程管理的概念項(xiàng)目工程管理的概念 n項(xiàng)目工程管理文件項(xiàng)目工程管理文件MakefileMakefile nAutotoolAutotool自動(dòng)生成自動(dòng)生成MakefileMakefile nLinuxLinux開(kāi)源項(xiàng)目嵌入式移植開(kāi)源項(xiàng)目嵌入式移植 軟件工程維護(hù)問(wèn)題軟件工程維護(hù)問(wèn)題 一個(gè)軟件項(xiàng)目通常包含多個(gè)源碼文件,每個(gè)源代碼的編譯和鏈接都要書(shū)寫(xiě)一個(gè)軟件項(xiàng)目通常包含多個(gè)源碼文件,每個(gè)源代碼的編譯和鏈接都要書(shū)寫(xiě) 大量的命令。大量的命令。 在一項(xiàng)目里,代碼通常都有引用關(guān)系,因此需要指定誰(shuí)先編譯,誰(shuí)后編譯,在一項(xiàng)目里,代碼通常都有引用
2、關(guān)系,因此需要指定誰(shuí)先編譯,誰(shuí)后編譯, 甚至是更復(fù)雜的功能操作。甚至是更復(fù)雜的功能操作。 重復(fù)編譯時(shí)我們希望只對(duì)修改過(guò)的文件執(zhí)行編譯鏈接,加快編譯速度。重復(fù)編譯時(shí)我們希望只對(duì)修改過(guò)的文件執(zhí)行編譯鏈接,加快編譯速度。 通過(guò)自動(dòng)換編譯腳本維護(hù)通過(guò)自動(dòng)換編譯腳本維護(hù) 1 1、將每個(gè)源文件需要用到的編譯、鏈接命令寫(xiě)到、將每個(gè)源文件需要用到的編譯、鏈接命令寫(xiě)到shellshell腳本腳本 2 2、安裝代碼的引用關(guān)系,仔細(xì)安排編譯、鏈接命令的先后順序、安裝代碼的引用關(guān)系,仔細(xì)安排編譯、鏈接命令的先后順序 3 3、對(duì)于任何源碼修改,重新執(zhí)行編譯腳本,對(duì)整個(gè)工程重新編譯、對(duì)于任何源碼修改,重新執(zhí)行編譯腳本,對(duì)
3、整個(gè)工程重新編譯 shellshell編譯腳本實(shí)例編譯腳本實(shí)例 1 1、工程結(jié)構(gòu)、工程結(jié)構(gòu): : 2 2、引用關(guān)系:、引用關(guān)系:myclass.cmyclass.c myclass.cmyclass.c引用引用student1.cstudent1.c、student2.cstudent2.c的接口函數(shù)顯示班級(jí)中每個(gè)學(xué)生的接口函數(shù)顯示班級(jí)中每個(gè)學(xué)生 shellshell編譯腳本實(shí)例編譯腳本實(shí)例 3 3、編譯腳本、編譯腳本:build.sh:build.sh 4 4、執(zhí)行過(guò)程:、執(zhí)行過(guò)程: 每執(zhí)行一次每執(zhí)行一次build.shbuild.sh,必須對(duì)整個(gè)工程的所有文件重新編譯、鏈接一次。,必須對(duì)整
4、個(gè)工程的所有文件重新編譯、鏈接一次。 5 5、存在問(wèn)題:、存在問(wèn)題: 如果工程有成千上萬(wàn)個(gè)文件,只改了其中的某個(gè)或者幾個(gè)文件就讓所有文件如果工程有成千上萬(wàn)個(gè)文件,只改了其中的某個(gè)或者幾個(gè)文件就讓所有文件 重新編譯的時(shí)間開(kāi)銷是不可接受的,我們只需要對(duì)改動(dòng)過(guò)的文件重新編譯、重新編譯的時(shí)間開(kāi)銷是不可接受的,我們只需要對(duì)改動(dòng)過(guò)的文件重新編譯、 重新鏈接成可執(zhí)行文件即可重新鏈接成可執(zhí)行文件即可 課程安排 nLinuxLinux項(xiàng)目工程管理的概念項(xiàng)目工程管理的概念 n項(xiàng)目工程管理文件項(xiàng)目工程管理文件MakefileMakefile nAutotoolAutotool自動(dòng)生成自動(dòng)生成MakefileMake
5、file nLinuxLinux開(kāi)源項(xiàng)目嵌入式移植開(kāi)源項(xiàng)目嵌入式移植 MakefileMakefile應(yīng)運(yùn)而生應(yīng)運(yùn)而生 Makefile Makefile 就為解決上述一系統(tǒng)問(wèn)題而創(chuàng)造的,可以把就為解決上述一系統(tǒng)問(wèn)題而創(chuàng)造的,可以把Makefile Makefile 理解成是理解成是 一種由一種由make make 程序進(jìn)行解釋的一種特殊腳本。程序進(jìn)行解釋的一種特殊腳本。 makemake是一個(gè)自動(dòng)編譯管理器,它能夠根據(jù)文件時(shí)間戳自動(dòng)發(fā)現(xiàn)更新過(guò)的文是一個(gè)自動(dòng)編譯管理器,它能夠根據(jù)文件時(shí)間戳自動(dòng)發(fā)現(xiàn)更新過(guò)的文 件而減少編譯工作量,同時(shí),它能讀入件而減少編譯工作量,同時(shí),它能讀入MakefileM
6、akefile的內(nèi)容來(lái)執(zhí)行大量的編譯的內(nèi)容來(lái)執(zhí)行大量的編譯 任務(wù)任務(wù) 用戶只需要一次性地將編譯命令寫(xiě)進(jìn)用戶只需要一次性地將編譯命令寫(xiě)進(jìn)MakefileMakefile就可以永久性地使用就可以永久性地使用makemake工工 程管理器完成編譯,大大提高實(shí)際項(xiàng)目的工作效率程管理器完成編譯,大大提高實(shí)際項(xiàng)目的工作效率 幾乎所有幾乎所有LinuxLinux下的項(xiàng)目編程都會(huì)涉及下的項(xiàng)目編程都會(huì)涉及makemake工程管理,對(duì)我們十分重要。工程管理,對(duì)我們十分重要。 MakefileMakefile實(shí)例實(shí)例 1 1、MakefileMakefile文件文件 MakefileMakefile實(shí)例實(shí)例 2 2
7、、執(zhí)行編譯:、執(zhí)行編譯:make/make allmake/make all 3 3、留意:、留意:MakefileMakefile文件本身不需要可執(zhí)行權(quán)限,它是被文件本身不需要可執(zhí)行權(quán)限,它是被makemake命令執(zhí)行的命令執(zhí)行的 4 4、MakefileMakefile可以增加一些有效的維護(hù)目標(biāo)可以增加一些有效的維護(hù)目標(biāo) 如:如:make clean:make clean:刪除編譯過(guò)程文件刪除編譯過(guò)程文件 Makefile/ShellMakefile/Shell腳本比較腳本比較 都是文本文件格式的腳本;都是文本文件格式的腳本; 都可以執(zhí)行都可以執(zhí)行ShellShell命令;命令; 都可以定
8、義變量都可以定義變量, ,和條件控制語(yǔ)句。和條件控制語(yǔ)句。( (使用格式上有差別使用格式上有差別) ) 相同點(diǎn)相同點(diǎn): 解釋器不同:解釋器不同:ShellShell腳本是由對(duì)應(yīng)腳本是由對(duì)應(yīng)ShellShell程序解釋;程序解釋; 而而MakefileMakefile是由是由makemake程序解釋程序解釋 格式不一樣:格式不一樣:ShellShell腳本以命令行為基本單位,而腳本以命令行為基本單位,而 Makefile Makefile以規(guī)則為基本單位以規(guī)則為基本單位 ShellShell腳本只要有執(zhí)行權(quán)限即可直接執(zhí)行,腳本只要有執(zhí)行權(quán)限即可直接執(zhí)行,MakefileMakefile必須必須
9、要用要用makemake來(lái)調(diào)用才行來(lái)調(diào)用才行, ,本身不需執(zhí)行權(quán)限本身不需執(zhí)行權(quán)限 不同點(diǎn)不同點(diǎn): Makefile的優(yōu)勢(shì)的優(yōu)勢(shì) 在開(kāi)發(fā)領(lǐng)域在開(kāi)發(fā)領(lǐng)域,Makefile,Makefile還是有相當(dāng)優(yōu)勢(shì):還是有相當(dāng)優(yōu)勢(shì): 1 1、MakefileMakefile具有自動(dòng)推導(dǎo),判斷源碼依賴關(guān)系的功能具有自動(dòng)推導(dǎo),判斷源碼依賴關(guān)系的功能 2 2、MakefileMakefile有可以使用隱含規(guī)則來(lái)簡(jiǎn)化有可以使用隱含規(guī)則來(lái)簡(jiǎn)化makefilemakefile的編寫(xiě)的編寫(xiě) 3 3、當(dāng)然,、當(dāng)然,MakefileMakefile使得大工程編譯維護(hù)變得更快!使得大工程編譯維護(hù)變得更快! MakefileMa
10、kefile基本結(jié)構(gòu)基本結(jié)構(gòu) 需要由需要由makemake工具創(chuàng)建的項(xiàng)目,通常是目標(biāo)文件和可執(zhí)行文件工具創(chuàng)建的項(xiàng)目,通常是目標(biāo)文件和可執(zhí)行文件 通常使用通常使用“目的目的targettarget)”一詞來(lái)表示要?jiǎng)?chuàng)建的項(xiàng)目一詞來(lái)表示要?jiǎng)?chuàng)建的項(xiàng)目 要?jiǎng)?chuàng)建的目標(biāo)依賴于哪些文件要?jiǎng)?chuàng)建的目標(biāo)依賴于哪些文件 創(chuàng)建每個(gè)目標(biāo)時(shí)需要運(yùn)行的命令創(chuàng)建每個(gè)目標(biāo)時(shí)需要運(yùn)行的命令, ,每個(gè)命令之前必須有每個(gè)命令之前必須有tabtab打頭打頭 通常都包含一些固定的偽目標(biāo)通常都包含一些固定的偽目標(biāo): : 如如allall、installinstall、cleanclean用作缺省編譯用作缺省編譯, ,安裝和清除文件安裝和清除
11、文件 # #打頭表示注釋行打頭表示注釋行 makefile makefile 中一般包含如下內(nèi)容:中一般包含如下內(nèi)容: MakefileMakefile的規(guī)則的規(guī)則 1 1、一個(gè)、一個(gè)Makefile Makefile 可以看作是一系列規(guī)則的組合,規(guī)則是可以看作是一系列規(guī)則的組合,規(guī)則是makemake進(jìn)行處理的依據(jù)進(jìn)行處理的依據(jù) 2 2、規(guī)則的組成:、規(guī)則的組成: (1 1)、需要由)、需要由makemake工具創(chuàng)建的目標(biāo)體工具創(chuàng)建的目標(biāo)體(target)(target),通常是可執(zhí)行文件或目標(biāo)文,通常是可執(zhí)行文件或目標(biāo)文 件;件; (2 2)、要?jiǎng)?chuàng)建的目標(biāo)所依賴的文件)、要?jiǎng)?chuàng)建的目標(biāo)所依賴
12、的文件(dependency_files)(dependency_files),通常是源文件、頭,通常是源文件、頭 文件或者其他目標(biāo)文件;文件或者其他目標(biāo)文件; (3 3)、創(chuàng)建每個(gè)目標(biāo)體時(shí)需要運(yùn)行的命令)、創(chuàng)建每個(gè)目標(biāo)體時(shí)需要運(yùn)行的命令(command)(command),可以是一行或多行,可以是一行或多行 ShellShell命令。命令。 目標(biāo)名稱目標(biāo)名稱 : : 依賴對(duì)象依賴對(duì)象 命令命令1 1 命令命令2 2 MakeMake調(diào)用方法調(diào)用方法 make make 默認(rèn)執(zhí)行當(dāng)前目錄下默認(rèn)執(zhí)行當(dāng)前目錄下MakefileMakefile文件的第文件的第1 1個(gè)規(guī)則個(gè)規(guī)則 make make可
13、以通用在命令行直接寫(xiě)可以通用在命令行直接寫(xiě)targettarget名稱,用于一個(gè)或多個(gè)名稱,用于一個(gè)或多個(gè)targettarget進(jìn)行編譯進(jìn)行編譯 make target1 target2make target1 target2 make allmake all make cleanmake clean make installmake install make uninstallmake uninstall MakefileMakefile的簡(jiǎn)化的簡(jiǎn)化 一個(gè)軟件的構(gòu)造過(guò)程中,很多步驟是固定的,因此很多時(shí)候可以簡(jiǎn)化處理,一個(gè)軟件的構(gòu)造過(guò)程中,很多步驟是固定的,因此很多時(shí)候可以簡(jiǎn)化處理, 這是這
14、是MakefileMakefile最大優(yōu)勢(shì)最大優(yōu)勢(shì) 在復(fù)雜項(xiàng)目里,為了簡(jiǎn)化在復(fù)雜項(xiàng)目里,為了簡(jiǎn)化MakefileMakefile的書(shū)寫(xiě),往往會(huì)采用擴(kuò)展寫(xiě)法,這些方的書(shū)寫(xiě),往往會(huì)采用擴(kuò)展寫(xiě)法,這些方 法包括法包括 變量變量 內(nèi)置規(guī)則內(nèi)置規(guī)則 自定義變量自定義變量 1 1、遞歸展開(kāi)方式定義、遞歸展開(kāi)方式定義 VAR = valueVAR = value 遞歸展開(kāi)方式定義的變量是在變量引用時(shí)進(jìn)行替換的。這種方式在處理形遞歸展開(kāi)方式定義的變量是在變量引用時(shí)進(jìn)行替換的。這種方式在處理形 如如CFLAGS = $(CFLAGS) -gCFLAGS = $(CFLAGS) -g的變量時(shí)可能導(dǎo)致無(wú)窮循環(huán),最終
15、導(dǎo)致溢出。的變量時(shí)可能導(dǎo)致無(wú)窮循環(huán),最終導(dǎo)致溢出。 2 2、簡(jiǎn)單擴(kuò)展方式定義、簡(jiǎn)單擴(kuò)展方式定義 VAR := value VAR := value 簡(jiǎn)單擴(kuò)展方式變量的值在定義展開(kāi),并且只展開(kāi)一次消除了上面無(wú)窮循環(huán)簡(jiǎn)單擴(kuò)展方式變量的值在定義展開(kāi),并且只展開(kāi)一次消除了上面無(wú)窮循環(huán) 的問(wèn)題。的問(wèn)題。 預(yù)定義變量預(yù)定義變量 1 1、MakeMake工程管理器維護(hù)了一些預(yù)定義變量,可以在工程管理器維護(hù)了一些預(yù)定義變量,可以在MakefileMakefile中直接使用中直接使用 (1 1CC C CC C 編譯器的名稱,默認(rèn)值為編譯器的名稱,默認(rèn)值為cccc。 (2 2CFLAGS C CFLAGS C
16、編譯器的選項(xiàng),無(wú)默認(rèn)值。編譯器的選項(xiàng),無(wú)默認(rèn)值。 (3 3LDFLAGS C LDFLAGS C 鏈接器的選項(xiàng)鏈接器的選項(xiàng), ,無(wú)默認(rèn)值。無(wú)默認(rèn)值。 如如: :使用數(shù)學(xué)函數(shù)庫(kù)使用數(shù)學(xué)函數(shù)庫(kù)LDFLAGS = -lmLDFLAGS = -lm (4 4RM RM 文件刪除程序名稱文件刪除程序名稱, ,默認(rèn)值為默認(rèn)值為rm frm f (5 5AR AR 歸檔維護(hù)程序的名稱,默認(rèn)值為歸檔維護(hù)程序的名稱,默認(rèn)值為 ar ar。 (6 6ARFLAGS ARFLAGS 歸檔維護(hù)程序的選項(xiàng),無(wú)默認(rèn)值。歸檔維護(hù)程序的選項(xiàng),無(wú)默認(rèn)值。 (7 7CXX C+ CXX C+ 編譯器的名稱,默認(rèn)值為編譯器的名稱,
17、默認(rèn)值為 g+ g+。 (8 8CXXFLAGS C+ CXXFLAGS C+ 編譯器的選項(xiàng)。編譯器的選項(xiàng)。 2 2、在、在MakefileMakefile內(nèi)可以使用自定義變量來(lái)覆蓋預(yù)定義變量?jī)?nèi)可以使用自定義變量來(lái)覆蓋預(yù)定義變量 如:如:ARFLAGS = crvs CC = gccARFLAGS = crvs CC = gcc 自定義與預(yù)定義變量示例自定義與預(yù)定義變量示例 自動(dòng)變量自動(dòng)變量 對(duì)每一條對(duì)每一條MakefileMakefile規(guī)則規(guī)則,Make,Make維護(hù)了一些自動(dòng)變量。維護(hù)了一些自動(dòng)變量。 $ $ 第一個(gè)依賴文件的名稱。第一個(gè)依賴文件的名稱。 $ $ 目標(biāo)的完整名稱。目標(biāo)的完
18、整名稱。 $ $ 所有的依賴文件,以空格分開(kāi),不包含重復(fù)的依賴文件。所有的依賴文件,以空格分開(kāi),不包含重復(fù)的依賴文件。 $ $* * 不包含擴(kuò)展名的目標(biāo)文件名稱。不包含擴(kuò)展名的目標(biāo)文件名稱。 $+ $+ 所有的依賴文件,以空格分開(kāi),并以出現(xiàn)的先后為序,可能包含所有的依賴文件,以空格分開(kāi),并以出現(xiàn)的先后為序,可能包含 重復(fù)的依賴文件。重復(fù)的依賴文件。 $? $? 所有的依賴文件,以空格分開(kāi),這些依賴文件的修改日期比目標(biāo)所有的依賴文件,以空格分開(kāi),這些依賴文件的修改日期比目標(biāo) 的創(chuàng)建日期晚。的創(chuàng)建日期晚。 $% $% 如果目標(biāo)是歸檔成員,則該變量表示目標(biāo)的歸檔成員名稱如果目標(biāo)是歸檔成員,則該變量表
19、示目標(biāo)的歸檔成員名稱 自動(dòng)變量示例自動(dòng)變量示例 內(nèi)置規(guī)則內(nèi)置規(guī)則 用用GCCGCC編譯一個(gè)程序的步驟都是固定的,編譯一個(gè)程序的步驟都是固定的,GNU make GNU make 會(huì)內(nèi)置有一些規(guī)則。來(lái)會(huì)內(nèi)置有一些規(guī)則。來(lái) 簡(jiǎn)化這一些固定步驟簡(jiǎn)化這一些固定步驟 1 1、隱式規(guī)則、隱式規(guī)則 (1 1隱式規(guī)則告訴隱式規(guī)則告訴makemake怎樣使用傳統(tǒng)技術(shù)完成任務(wù),不必在怎樣使用傳統(tǒng)技術(shù)完成任務(wù),不必在MakefileMakefile中指中指 定編譯的具體細(xì)節(jié),而只需要把目標(biāo)文件列出來(lái)即可定編譯的具體細(xì)節(jié),而只需要把目標(biāo)文件列出來(lái)即可 (2 2makemake自動(dòng)使用隱式規(guī)則來(lái)確定如何生成目標(biāo)文件自動(dòng)
20、使用隱式規(guī)則來(lái)確定如何生成目標(biāo)文件 (3 3最重要的隱式規(guī)則:所有的最重要的隱式規(guī)則:所有的“file.o“file.o文件都可以自動(dòng)由文件都可以自動(dòng)由file.cfile.c文文 件使用命令件使用命令$(CC) $(CFLAGS) -c file.c -o file.o$(CC) $(CFLAGS) -c file.c -o file.o生成生成. . 隱式規(guī)則示例隱式規(guī)則示例 內(nèi)置規(guī)則內(nèi)置規(guī)則 2 2、模式規(guī)則、模式規(guī)則 (1 1有時(shí)候多個(gè)文件具有相同的處理規(guī)則,這時(shí)候就要自定義模式規(guī)則,即有時(shí)候多個(gè)文件具有相同的處理規(guī)則,這時(shí)候就要自定義模式規(guī)則,即 相同模式的目標(biāo)共用的規(guī)則相同模式的目
21、標(biāo)共用的規(guī)則 (2 2所有的所有的.o.o文件依賴于對(duì)應(yīng)的文件依賴于對(duì)應(yīng)的.c.c文件的模式規(guī)則文件的模式規(guī)則 %.o: %.c%.o: %.c $(CC) $(CFLAGS) -c $ -o $(CC) $(CFLAGS) -c $arm-linux-gcc ar - arm-linux-ar strip - arm-linux-strip 大部分項(xiàng)目的大部分項(xiàng)目的Makefile可以簡(jiǎn)單換掉變量可以簡(jiǎn)單換掉變量CC、AR、STRIP等就等就 可實(shí)現(xiàn)移植可實(shí)現(xiàn)移植 簡(jiǎn)單項(xiàng)目移植簡(jiǎn)單項(xiàng)目移植 Makefile移植示例移植示例 簡(jiǎn)單項(xiàng)目移植簡(jiǎn)單項(xiàng)目移植 ConfigureConfigure開(kāi)源項(xiàng)
22、目移植開(kāi)源項(xiàng)目移植 復(fù)雜項(xiàng)目的移植主要是指復(fù)雜項(xiàng)目的移植主要是指autoconf工具生成工具生成configure配置腳本配置腳本 的項(xiàng)目,絕大部分開(kāi)源項(xiàng)目用這樣形式發(fā)布的項(xiàng)目,絕大部分開(kāi)源項(xiàng)目用這樣形式發(fā)布 這些項(xiàng)目的這些項(xiàng)目的Makefile需要通過(guò)執(zhí)行需要通過(guò)執(zhí)行configure配置腳本生成,配置腳本生成, configure主要做二件事主要做二件事 檢測(cè)當(dāng)前環(huán)境是否支持編譯這一軟件檢測(cè)當(dāng)前環(huán)境是否支持編譯這一軟件 生成生成Makefile 在進(jìn)行嵌入式移植前先了解要軟件怎么運(yùn)行的和運(yùn)行原理在進(jìn)行嵌入式移植前先了解要軟件怎么運(yùn)行的和運(yùn)行原理 絕大部分軟件在絕大部分軟件在X86下用下用c
23、onfigure都會(huì)一次性通過(guò)都會(huì)一次性通過(guò) 這樣先在這樣先在X86環(huán)境下編譯運(yùn)行,測(cè)試通過(guò)后再考慮移植到目標(biāo)環(huán)境下編譯運(yùn)行,測(cè)試通過(guò)后再考慮移植到目標(biāo) 板板 ConfigureConfigure開(kāi)源項(xiàng)目移植開(kāi)源項(xiàng)目移植 1、confgure是生成是生成Makefile工具,在使用,工具,在使用,,一定要用一定要用 configure help查看其選項(xiàng),查看是否支持查看其選項(xiàng),查看是否支持CC、CFLAGS等等 環(huán)境變量的支持環(huán)境變量的支持 (1如果是直接在執(zhí)行如果是直接在執(zhí)行configure時(shí)加入工具鏈支持時(shí)加入工具鏈支持 CC=arm-linux-gcc ./configure (2檢
24、查檢查configure 是不是支持是不是支持 -host 選擇選擇 如是則使用如是則使用-host=arm-linux來(lái)讓腳本來(lái)修改來(lái)讓腳本來(lái)修改 ./configure -host=arm-linux 如果不是則直接運(yùn)行如果不是則直接運(yùn)行configure,生成,生成makefile后手工修改后手工修改 移植madplay到開(kāi)發(fā)板 1 1、要求:移植開(kāi)源、要求:移植開(kāi)源madplaymadplay項(xiàng)目到開(kāi)發(fā)板,使它能在開(kāi)發(fā)板上項(xiàng)目到開(kāi)發(fā)板,使它能在開(kāi)發(fā)板上 播放播放mp3mp3歌曲歌曲 2 2、移植前準(zhǔn)備:、移植前準(zhǔn)備: (1)(1)、需要如下文件:、需要如下文件:madplay-0.15
25、.2b.tar.gzmadplay-0.15.2b.tar.gz、libmad-libmad- 0.15.1b.tar.gz0.15.1b.tar.gz、libid3tag-0.15.1v.tar.gzlibid3tag-0.15.1v.tar.gz、zlib-zlib- 1.1.4.tar.gz1.1.4.tar.gz (2 2)、前三個(gè)文件下載地址:)、前三個(gè)文件下載地址: sourceforge/projects/mad/files/sourceforge/projects/mad/files/ 后一個(gè)文件下載地址后一個(gè)文件下載地址 zlib/zlib/ 找到要求的版本進(jìn)行下載找到要求的
26、版本進(jìn)行下載 移植madplay到開(kāi)發(fā)板 3 3、移植步驟:、移植步驟: (1 1解壓所有軟件包,放在解壓所有軟件包,放在madplaymadplay目錄下目錄下 移植madplay到開(kāi)發(fā)板 3 3、移植步驟:、移植步驟: (2 2進(jìn)入包目錄配置并編譯進(jìn)入包目錄配置并編譯zlib-1.1.4zlib-1.1.4 配置:將配置:將build-zlib.shbuild-zlib.sh拷貝到加壓目錄并運(yùn)行拷貝到加壓目錄并運(yùn)行 編譯:編譯:makemake 安裝:安裝:make installmake install (3 3進(jìn)入包目錄配置并編譯進(jìn)入包目錄配置并編譯libid3tag-0.15.1blibid3tag
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 柳州專版2025版中考?xì)v史奪分復(fù)習(xí)第02部分七下第11課元朝的統(tǒng)治實(shí)戰(zhàn)演練
- 質(zhì)量管理與流程優(yōu)化的雙贏策略
- 水的建議書(shū)(28篇)
- 跨學(xué)科合作推動(dòng)下的藥物代謝動(dòng)力學(xué)研究進(jìn)展與展望
- 參加中小學(xué)體育教學(xué)觀摩研討會(huì)總結(jié)
- 購(gòu)物中心節(jié)假日營(yíng)銷的跨文化考量
- 跨文化背景下英語(yǔ)聽(tīng)說(shuō)訓(xùn)練的教師引導(dǎo)藝術(shù)
- 跨境電商的稅收政策影響分析報(bào)告
- 跨境電商平臺(tái)視覺(jué)設(shè)計(jì)實(shí)戰(zhàn)打造用戶體驗(yàn)
- 山東2025年02月青島市嶗山區(qū)事業(yè)單位公開(kāi)招考22名工作人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年黑龍江農(nóng)墾職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)完整版
- 2025年時(shí)事政治考題及參考答案(350題)
- 《汽車專業(yè)英語(yǔ)》2024年課程標(biāo)準(zhǔn)(含課程思政設(shè)計(jì))
- 部編四年級(jí)道德與法治下冊(cè)全冊(cè)教案(含反思)
- JBT 11699-2013 高處作業(yè)吊籃安裝、拆卸、使用技術(shù)規(guī)程
- AutoCAD 2020中文版從入門(mén)到精通(標(biāo)準(zhǔn)版)
- 煙草栽培(二級(jí))鑒定理論考試復(fù)習(xí)題庫(kù)-上(單選題匯總)
- DB32T 4353-2022 房屋建筑和市政基礎(chǔ)設(shè)施工程檔案資料管理規(guī)程
- 2022年怎樣使用電器正常工作導(dǎo)學(xué)案
- 【工法】衛(wèi)生間聚乙烯丙綸防水和JS防水施工工藝
- 物品出入庫(kù)明細(xì)表格
評(píng)論
0/150
提交評(píng)論