開(kāi)發(fā)工具安裝系統(tǒng)配置makefil.ppt
《開(kāi)發(fā)工具安裝系統(tǒng)配置makefil.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《開(kāi)發(fā)工具安裝系統(tǒng)配置makefil.ppt(43頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
Linux培訓(xùn)講義,基于Ubuntu,RHEL1.系統(tǒng)配置,makefile,教學(xué)內(nèi)容,Linux下開(kāi)發(fā)語(yǔ)言的選擇Linux的環(huán)境變量Java環(huán)境配置C++環(huán)境配置開(kāi)發(fā)環(huán)境選擇?IDEvs編輯器makefile,Linux開(kāi)發(fā)語(yǔ)言的選擇,主流的可選擇的主流開(kāi)發(fā)語(yǔ)言清單:,Linux開(kāi)發(fā)語(yǔ)言的選擇,我們會(huì)用到的語(yǔ)言:c?Linux的母語(yǔ)c++?高效的兼容c的面向?qū)ο笳Z(yǔ)言Java?“跨平臺(tái)設(shè)計(jì)良好的oo語(yǔ)言”Python?跨平臺(tái)用來(lái)替代傳統(tǒng)腳本的腳本bash(shell)?最古老的腳本語(yǔ)言,Linux的環(huán)境變量,什么是環(huán)境變量環(huán)境變量一般是指在操作系統(tǒng)中用來(lái)指定操作系統(tǒng)運(yùn)行環(huán)境的一些參數(shù)。常用的環(huán)境變量PATH?操作系統(tǒng)用來(lái)搜索文件的默認(rèn)路徑PWD?當(dāng)前工作目錄,Linux的環(huán)境變量,設(shè)置環(huán)境變量export命令例子:exporttest=value/etc/profile?啟動(dòng)計(jì)算機(jī)生效.bashrc文件?登錄之后生效顯示環(huán)境變量顯示全部環(huán)境變量:env命令顯示某個(gè)環(huán)境變量:echo變量名,Java環(huán)境配置,下載JDK?使用1.6+比較好。解壓到指定目錄設(shè)置環(huán)境變量:三個(gè)JAVA_HOME=/data/Development/java/PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH測(cè)試:java-v,helloworld注意把新添加的JDK的bin目錄追加在$PATH的最前面,這樣當(dāng)系統(tǒng)中安裝有多個(gè)JDK版本時(shí),程序會(huì)優(yōu)先搜尋排在最前面的JDK版本。,C++環(huán)境配置,使用包管理器安裝yum或者apt-get安裝。yum:yuminstallgccgcc-c++apt-get:apt-getintallbuild-essential自己編譯一個(gè)gcc/g++?不推薦,時(shí)間太長(zhǎng),容易出錯(cuò)測(cè)試環(huán)境:gcc–v,g++-v,helloworld,開(kāi)發(fā)環(huán)境選擇?IDEvs編輯器,可選的IDE:eclipse?+CDT,pyDev等。code::blockscodeliteanjuntaKdevelop?我們主要以eclipse為主。,開(kāi)發(fā)環(huán)境選擇?IDEvs編輯器,eclipse+CDT的安裝方法下載eclipseforlinux解壓到指定位置下載CDT,放到eclipse的目錄下配置eclipse環(huán)境?建立連接,代碼格式等測(cè)試環(huán)境?Java工程,C++工程,開(kāi)發(fā)環(huán)境選擇?IDEvs編輯器,可選的編輯器:emacsvimgeditKate?我們主要以vim和gedit為主,makefile,回顧:C/C++代碼是怎么變成程序的預(yù)處理編譯連接生成匯編代碼生成機(jī)器碼,makefile,問(wèn)題提出:當(dāng)一個(gè)工程有很多源文件文件依賴,編譯繁瑣,需要重新編譯很多gcc/g++編譯器make工具makefile,makefile,依賴關(guān)系依賴關(guān)系定義了最終應(yīng)用程序的每個(gè)文件和源文件之間的關(guān)系。在makefile中這些規(guī)則的寫法如下:target:file1file2注意冒號(hào)后面的空格,文件之間的空格,makefile,依賴關(guān)系例子:myapp:main.o2.o3.omain.o:main.cmain.ca.h2.o:2.ca.hb.h3.o:2.cb.hc.h,makefile,規(guī)則規(guī)則定義了目標(biāo)的生成方式,上面的例子中,要怎樣重新生成2.o呢?正常情況下只需要用gcc-c2.c但是如果需要指定頭文件目錄,或者為了今后的調(diào)試需要設(shè)置符號(hào)信息選項(xiàng)該怎么做?注意:規(guī)則所在的行必須用制表符tab開(kāi)頭,否則會(huì)導(dǎo)致make錯(cuò)誤。,makefile,make命令的選項(xiàng)和參數(shù)k當(dāng)make命令遇到錯(cuò)誤的時(shí)候繼續(xù)執(zhí)行n讓make輸出將要執(zhí)行的操作步驟f指定makefile的文件名,makefile,簡(jiǎn)單的makefilemyapp:main.o2.o3.ogcc-omyappmain.o2.o3.omain.o:main.ca.hgcc-cmain.c2.o:2.ca.hb.hgcc-c2.c3.o:3.cb.hc.hgcc-c3.cmake-fMakefile,makefile,make處理makefile文件中的依賴關(guān)系,確定需要?jiǎng)?chuàng)建的文件以及創(chuàng)建順序。雖然上面把myapp放在最前面,但是make能判斷出創(chuàng)建文件的正確順序。它調(diào)用在規(guī)則部分給出的命令用來(lái)創(chuàng)建相應(yīng)的文件,同時(shí)會(huì)在執(zhí)行時(shí)在屏幕上將命令顯示出來(lái)。測(cè)試:改變一個(gè)源文件看看makefile能否處理這個(gè)情況。,makefile,makefile中的注釋makefile中的注釋以#開(kāi)頭,一直延續(xù)到這一行的結(jié)束,同C/C++的行注釋//類似。,makefile,問(wèn)題的產(chǎn)生:上面基本上已經(jīng)介紹了makefile的全部?jī)?nèi)容,但是在實(shí)際項(xiàng)目使用中還有一定的問(wèn)題,比如項(xiàng)目中需要在不同的平臺(tái)上更換編譯器,項(xiàng)目目錄結(jié)構(gòu)發(fā)生變化等。宏:定義:macro=value取消:macro=引用:${macro},makefile,宏的作用:設(shè)置編譯器的選項(xiàng)消除編譯過(guò)程中的硬編碼(hardcode)使用宏的makefile例子,makefile,all:myapp#whichcompilerCC=gcc#whereareincludefileskeptINCLUDE=.#optionsfordevelopmentCFLAGS=-g-Wall-ansi#optionsforrelease#CFLAGS=-Wall-ansimyapp:main.o2.o3.o${CC}-I${INCLUDE}-omyappmain.o2.o3.omain.o:main.ca.h${CC}-I${INCLUDE}-cmain.c2.o:2.ca.hb.h${CC}-I${INCLUDE}-c2.c3.o:3.cb.hc.h${CC}-I${INCLUDE}-c3.c,makefile,makefile的內(nèi)置宏$?:列出當(dāng)前目標(biāo)所依賴的文件列表中比當(dāng)前目標(biāo)文件還要新的文件$@:當(dāng)前目標(biāo)的名字$<:當(dāng)前依賴文件的名字$*:不包括后綴名的當(dāng)前依賴文件的名字,makefile,多個(gè)目標(biāo)通常需要制作的目標(biāo)文件不止一個(gè),或者希望將多個(gè)規(guī)則集中到一處執(zhí)行,通過(guò)擴(kuò)展makefile即可達(dá)到這一目的。例子:給上面的例子增加兩個(gè)選項(xiàng):clean用來(lái)清除不需要的目標(biāo)文件Install用來(lái)將編譯好的目標(biāo)放到指定目錄,makefile,INSTDIR=/usr/local/bin#whereareincludefileskeptINCLUDE=.#optionsfordevelopmentCFLAGS=-g-Wall-ansi#optionsforrelease#CFLAGS=-Wall-ansimyapp:main.o2.o3.o${CC}-I${INCLUDE}-omyappmain.o2.o3.omain.o:main.ca.h${CC}-I${INCLUDE}-cmain.c2.o:2.ca.hb.h${CC}-I${INCLUDE}-c2.c3.o:3.cb.hc.h${CC}-I${INCLUDE}-c3.cclean:-rmmain.o2.o3.oinstall:@if[-d${INSTDIR}];\thencpmyapp${INSTDIR};CHMODa+x${INSTDIR}/myapp;\chmodog-w${INSTDIR}/myapp;\echo"Installedin${INSTDIR};"else\echo"${INSTDIR}doesnotexist.";\fi;,makefile,注意事項(xiàng):all只定義了myapp這一個(gè)目標(biāo),如果在執(zhí)行make的時(shí)候沒(méi)有指定目標(biāo),make的默認(rèn)行為就是創(chuàng)建第一個(gè)目標(biāo)all增加了兩個(gè)新的目標(biāo)clean和installrm命令用-開(kāi)頭,意義是忽略rm命令的執(zhí)行結(jié)果clean命令沒(méi)有依賴項(xiàng),在執(zhí)行makeclean的時(shí)候,該項(xiàng)目對(duì)應(yīng)的規(guī)則總會(huì)被執(zhí)行。,makefile,install目標(biāo)依賴于myapp,make知道必須首先創(chuàng)建myapp,然后才能執(zhí)行制作該目標(biāo)的所需要的其他命令。用于制作install目標(biāo)的規(guī)則由幾個(gè)shell腳本命令組成。由于make命令在執(zhí)行規(guī)則時(shí)會(huì)調(diào)用一個(gè)shell,并且會(huì)針對(duì)每個(gè)命令調(diào)用一個(gè)shell,這時(shí)候必須在上面每行代碼的結(jié)尾加上一個(gè)反斜杠\。讓所有的shell腳本命令在邏輯上處于同一行,并作為一個(gè)整體只傳遞給一個(gè)shell執(zhí)行。這個(gè)命令用@開(kāi)頭,表示make在執(zhí)行這些規(guī)則之前不會(huì)在標(biāo)準(zhǔn)輸出上顯示命令本身。,makefile,目標(biāo)install順序執(zhí)行多個(gè)命令使目標(biāo)安裝到指定位置。本例中,在執(zhí)行shell命令過(guò)程中,make不檢測(cè)上一條命令是否成功。如果需要檢測(cè)上調(diào)命令的執(zhí)行結(jié)果,則可以將這些命令用\thencpmyapp${INSTDIR};CHMODa+x${INSTDIR}/myapp;\chmodog-w${INSTDIR}/myapp;\echo"Installedin${INSTDIR};"else\echo"${INSTDIR}doesnotexist.";\fi;,makefile,makefile和子目錄有時(shí)我們希望把組成一個(gè)靜態(tài)庫(kù)的幾個(gè)文件從主文件中分離出來(lái),并將它們保存在一個(gè)目錄中。用make來(lái)完成這個(gè)任務(wù)的方法有兩個(gè)。,makefile,方法1:首先在子目錄中編寫出第二個(gè)makefile其作用是編譯該目錄下的源文件生成一個(gè)靜態(tài)庫(kù),然后將生成的靜態(tài)庫(kù)copy到上一級(jí)的目錄中。在上一級(jí)目錄中的makefile包含一條用于生成靜態(tài)庫(kù)的規(guī)則,這條規(guī)則會(huì)調(diào)用第二個(gè)makefile:mylib.a:(cdmylibdir;${MAKE})#注意會(huì)避免使用新shellmake調(diào)用這條規(guī)則創(chuàng)靜態(tài)庫(kù)的時(shí)候,會(huì)切換到mylibdir中,然后調(diào)用新的make來(lái)管理函數(shù)庫(kù)。,makefile,方法2:在原來(lái)的makefile中增加一些宏。新增宏通過(guò)在已經(jīng)見(jiàn)過(guò)的宏的末尾追加規(guī)則:.c.o${CC}${FLAGS}-c${@D}/${- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 開(kāi)發(fā) 工具 安裝 系統(tǒng)配置 makefil
鏈接地址:http://m.appdesigncorp.com/p-12726420.html