版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【智能路由器】openwrt創(chuàng)建用戶軟件包openwrt根目錄先看看openwrt初次編譯好后的目錄結(jié)構(gòu):如上圖所示:arvik_note:本人更改軟件包記錄筆記,不必理會(huì)。include:存放*.mk文件build_dir:建立工具鏈時(shí)的臨時(shí)目錄,解壓、編譯、補(bǔ)丁等文件存放點(diǎn)staging_dir:工具鏈的安裝位置target:平臺(tái)相關(guān)代碼及配置文件dl:下載目錄,編譯期間從網(wǎng)上下載的數(shù)據(jù)包都會(huì)放在此目錄,數(shù)據(jù)包會(huì)解壓到build_dir目錄下package:包含了我們?cè)谂渲梦募镌O(shè)定懂得所有編譯好的軟件包feeds:執(zhí)行./srcipts/feedsinstall后的緩存文件存放點(diǎn)bin:對(duì)應(yīng)平臺(tái)編譯好的二進(jìn)制文件以及相關(guān)ipk文件創(chuàng)建軟件包↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓以下內(nèi)容摘自官方WIKI↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓構(gòu)建方法openwrt靠Makefile文件來(lái)添加軟件,Makefile文件最關(guān)鍵,一般來(lái)說(shuō)它提供了下載、編譯、安裝這個(gè)軟件包的步驟。這里Makefile的格式跟一般的Makefile不一樣,因?yàn)樗墓δ芨胀∕akefile就是不一樣的。它是一種編寫方便的模板。以package/bridge/Makefile文件為例:include$(TOPDIR)/rules.mkPKG_NAME:=bridgePKG_VERSION:=1.0.6PKG_RELEASE:=1PKG_BUILD_DIR:=$(BUILD_DIR)/bridge-utils-$(PKG_VERSION)PKG_SOURCE:=bridge-utils-$(PKG_VERSION).tar.gzPKG_SOURCE_URL:=@SF/bridgePKG_MD5SUM:=9b7dc52656f5cbec846a7ba3299f73bdPKG_CAT:=zcatinclude$(INCLUDE_DIR)/package.mkdefinePackage/bridgeSECTION:=baseCATEGORY:=NetworkTITLE:=Ethernetbridgingconfigurationutility#DESCRIPTION:=Thisvariableisobsolete.usethePackage/name/descriptiondefineinstead!URL:=/endefdefinePackage/bridge/descriptionEthernetbridgingigurationutilityManageethernetbridging;awaytoconnectnetworkstogethertoformalargernetwork.endefdefineBuild/Configure$(callBuild/Configure/Default,--with-linux-headers=$(LINUX_DIR))endefdefinePackage/bridge/install$(INSTALL_DIR)$(1)/usr/sbin$(INSTALL_BIN)$(PKG_BUILD_DIR)/brctl/brctl$(1)/usr/sbin/endef$(eval$(callBuildPackage,bridge))軟件包變量建立一個(gè)軟件包不需要太多工作;大部分工作都隱藏在其它的makefiles中,編寫工作被抽象成對(duì)幾個(gè)變量的賦值。PKG_NAME-軟件包的名字,在menuconfig和ipkg顯示PKG_VERSION-軟件包的版本,主干分支的版本正是我們要下載的PKG_RELEASE-這個(gè)makefile的版本PKG_BUILD_DIR-編譯軟件包的目錄PKG_SOURCE-要下載的軟件包的名字,一般是由PKG_NAME和PKG_VERSION組成PKG_SOURCE_URL-下載這個(gè)軟件包的鏈接PKG_MD5SUM-軟件包的MD5值PKG_CAT-解壓軟件包的方法(zcat,bzcat,unzip)PKG_BUILD_DEPENDS-需要預(yù)先構(gòu)建的軟件包,但只是在構(gòu)建本軟件包時(shí),而不是運(yùn)行的時(shí)候。它的語(yǔ)法和下面的DEPENDS一樣。PKG_*變量定義了從何處下載這個(gè)軟件包;@SF是表示從sourceforge網(wǎng)站下載的一個(gè)特殊關(guān)鍵字。md5sum用來(lái)檢查從網(wǎng)上下載的軟件包是否完好無(wú)損。PKG_BUILD_DIR定義了軟件包源代碼的解壓路徑。注意到上面示例文件底部的最后一行嗎?這是最為關(guān)鍵的BuildPackage宏。它是在$(INCLUDE_DIR)/package.mk文件里定義的。BuildPackage宏只要求一個(gè)參數(shù),即要編譯的軟件包名,在本例中是”bridge”。所有其他信息都通過(guò)宏來(lái)獲得,這提供了一種內(nèi)在的簡(jiǎn)潔性。比如BuildPackage需要軟件包的一大串描述信息,我們并不要向它傳遞冗長(zhǎng)的參數(shù),因?yàn)槲覀円呀?jīng)約定描述信息定義在DESCRIPTION宏,BuildPackage從里面讀取就可以了。BuildPackage相關(guān)的宏P(guān)ackage/描述軟件包在menuconfig和ipkg中的信息,可以定義如下變量:SECTION-軟件包類型(尚未使用)CATEGORY-menuconfig中軟件包所屬的一級(jí)目錄,如NetworkSUBMENU-menuconfig中軟件包所屬的二級(jí)目錄,如dial-in/upTITLE-軟件包標(biāo)題DESCRIPTION-軟件包的詳細(xì)說(shuō)明URL-軟件的原始位置,一般是軟件作者的主頁(yè)MAINTAINER-(optional)軟件包維護(hù)人員DEPENDS-(optional)依賴項(xiàng),運(yùn)行本軟件依賴的其他包Package/conffiles(可選)軟件包需要復(fù)制的配置文件列表,一個(gè)文件占一行Build/Prepare(可選)一組解包源代碼和打補(bǔ)丁的命令,一般不需要。Build/Configure(可選)如果源代碼編譯前需要configure且指定一些參數(shù),就把這些參數(shù)放在這兒。否則可以不定義。Build/Compile(可選)編譯源代碼命令。Package/install軟件安裝命令,主要是把相關(guān)文件拷貝到指定目錄,如配置文件。Package/preinst軟件安裝之前被執(zhí)行的腳本,別忘了在第一句加上#!/bin/sh。如果腳本執(zhí)行完畢要取消安裝過(guò)程,直接讓它返回false即可。Package/postinst軟件安裝之后被執(zhí)行的腳本,別忘了在第一句加上#!/bin/sh。Package/prerm軟件刪除之前被執(zhí)行的腳本,別忘了在第一句加上#!/bin/sh。如果腳本執(zhí)行完畢要取消刪除過(guò)程,直接讓它返回false即可。Package/postrm軟件刪除之后被執(zhí)行的腳本,別忘了在第一句加上#!/bin/sh。為什么一些定義是”Package/”前綴,另一些定義卻是”Build”前綴?這是因?yàn)槲覀冎С忠粋€(gè)特性:從單個(gè)源代碼構(gòu)建多個(gè)軟件包。OpenWrt工作在一個(gè)Makefile對(duì)應(yīng)一個(gè)源代碼的假設(shè)之上,但是你可以把編譯生成的程序分割成任意多個(gè)軟件包。因?yàn)榫幾g只要一次,所以使用全局的”Build”定義是最合適的。然后你可以增加很多“Package/”定義,為各軟件包分別指定安裝方法。建議你去看看dropbear包,這是一個(gè)很好的示范。提示:對(duì)于所有在pre/post,install/removal腳本中使用的變量,都應(yīng)該使用"$$"代替"$"。這是告訴make暫時(shí)不要解析這個(gè)變量,而是把它當(dāng)成普通字符串以及用"$"代替"$$"。在編輯好Makefile文件,并放到指定目錄后,這個(gè)新的軟件包將在下次執(zhí)行makemenuconfig時(shí)出現(xiàn),你可以選擇這個(gè)軟件包,保存退出,用make編譯?,F(xiàn)在就把一個(gè)軟件成功移植到OpenWrt中了!↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑以上內(nèi)容摘自官方WIKI↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑創(chuàng)建軟件包arvik_hello按照如下命令步驟:先建一個(gè)軟件集合的目錄arvik_appcd./packetmkdirarvik_app12在arvik_app目錄下建立arvik_hello目錄cd./arvik_appmkdirarvik_hello接著在arvik_hello中建立src目錄和Makefile文件cd./arvik_hellomkdirsrctouchMakefile該處Makefile文件內(nèi)容如下,可參照上面軟件包變量讀懂每句含義,在此不贅述。需要注意的是代碼里每行行末是沒(méi)有空格的,否則可能會(huì)出錯(cuò)。好了,openwrt就靠這個(gè)Makefile來(lái)添加我們的arvik_hello軟件包了。##########################################author:arvik#email:1216601195@#csdn:/u012819339#########################################include$(TOPDIR)/rules.mkARVIK_APP_DIR:=arvik_appPKG_NAME:=arvik_helloPKG_VERSION:=1.0.0PKG_RELEASE:=1PKG_BUILD_DIR:=$(BUILD_DIR)/$(ARVIK_APP_DIR)/$(PKG_NAME)include$(INCLUDE_DIR)/package.mkdefinePackage/$(PKG_NAME)SECTION:=UtilitiesCATEGORY:=Arvik_ApplicationsTITLE:=aTestProgramofferbyarvikMAINTAINER:=arvikendefdefinePackage/$(PKG_NAME)/descriptionThisisatestprogramthatprovidesaMAkefiletemplate!endefdefineBuild/Preparemkdir-p$(PKG_BUILD_DIR)$(CP)./src/*$(PKG_BUILD_DIR)/endefdefineBuild/ConfigureendefdefinePackage/$(PKG_NAME)/install$(INSTALL_DIR)$(1)/usr/bin$(INSTALL_BIN)$(PKG_BUILD_DIR)/$(PKG_NAME)$(1)/usr/bin/endef$(eval$(callBuildPackage,$(PKG_NAME)))下面就進(jìn)入src目錄來(lái)建立我們軟件源文件和Makefile文件了。cd./srctouchhello.ctouchMakefile123hello.c內(nèi)容如下:#include<stdio.h>intmain(){printf("arvikhelloworld!\n");return0;}此處Makefile文件內(nèi)容如下:##########################################author:arvik#email:1216601195@#csdn:/u012819339#########################################EXEC:=arvik_helloSRC:=hello.call:$(EXEC)$(EXEC):$(SRC)$(CC)$(CFLAGS)$(LDFLAGS)-o$@$(SRC)$(LDLIBS).PHONY:c
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《活動(dòng)管理觀念篇》課件
- 《詩(shī)歌鑒賞解題技巧》課件
- 2024年農(nóng)業(yè)局振興農(nóng)業(yè)科技工作總結(jié)
- 寒假自習(xí)課 25春初中道德與法治八年級(jí)下冊(cè)教學(xué)課件 第三單元 第六課 第5課時(shí) 國(guó)家司法機(jī)關(guān)
- 某省房屋建筑和基礎(chǔ)設(shè)施工程標(biāo)準(zhǔn)施工招標(biāo)文件
- 《詩(shī)詞賞析》課件
- 2015年高考語(yǔ)文試卷(北京)(解析卷)
- 體育用品銷售代表工作總結(jié)
- 建筑行業(yè)增強(qiáng)施工現(xiàn)場(chǎng)衛(wèi)生保障
- 《電動(dòng)力學(xué)》課件
- 醫(yī)院感染監(jiān)測(cè)清單
- Q∕SY 05592-2019 油氣管道管體修復(fù)技術(shù)規(guī)范
- 《1.我又長(zhǎng)大了一歲》教學(xué)課件∣泰山版
- JIS G3141-2021 冷軋鋼板及鋼帶標(biāo)準(zhǔn)
- qes三體系審核培訓(xùn)ppt課件
- 籃球校本課程教材
- 小學(xué)數(shù)學(xué)校本教材(共51頁(yè))
- 遺傳群體文獻(xiàn)解讀集
- 工藝裝備環(huán)保性與安全性的設(shè)計(jì)要點(diǎn)
- [玻璃幕墻施工方案]隱框玻璃幕墻施工方案
- 國(guó)家開放大學(xué)電大本科《管理案例分析》2023-2024期末試題及答案(試卷代號(hào):1304)
評(píng)論
0/150
提交評(píng)論