999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

大型嵌入式軟件的自動(dòng)化交叉編譯*

2012-06-25 02:46:08安峰
關(guān)鍵詞:嵌入式用戶系統(tǒng)

安峰

(蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院 信息技術(shù)系,蘇州 215123)

安峰(工程師),主要研究領(lǐng)域?yàn)榍度胧綀D像處理。

引 言

在嵌入式Linux軟件的開發(fā)當(dāng)中,交叉編譯基本是不可或缺的一步。如果整個(gè)系統(tǒng)規(guī)模較小的話,例如一些不需要其他庫(kù)或者很少依賴包的系統(tǒng),我們可以采取人工的辦法:下載源代碼、解壓縮、設(shè)置參數(shù)、交叉編譯然后下載運(yùn)行。但是隨著系統(tǒng)規(guī)模的不斷擴(kuò)大,依賴包的不斷增長(zhǎng),人工交叉編譯所需的工作量隨之增長(zhǎng),同時(shí)需要富有經(jīng)驗(yàn)的工程師進(jìn)行操作,難以實(shí)現(xiàn)目前市場(chǎng)所要求的快速開發(fā)。

例如筆者對(duì)一款Linux下的媒體管理軟件mythtv進(jìn)行交叉編譯的時(shí)候就遇到了這個(gè)問題,整個(gè)應(yīng)用軟件的壓縮包達(dá)到幾十兆,同時(shí)還依賴于其他幾十個(gè)庫(kù),而每個(gè)庫(kù)又有各自的依賴,如果按照傳統(tǒng)的交叉編譯方式進(jìn)行的話無(wú)疑是個(gè)災(zāi)難。幸運(yùn)的是,mythtv被集成在開源框架系統(tǒng)Openbricks當(dāng)中,這使得整個(gè)系統(tǒng)的交叉編譯、定制、開發(fā)和發(fā)布變得簡(jiǎn)單起來(lái)。

1 Openbricks框架系統(tǒng)介紹

Openbricks是一個(gè)企業(yè)級(jí)的框架系統(tǒng),內(nèi)部集成了Bootloader,kernel,Systemd,X11和大量的工業(yè)標(biāo)準(zhǔn)(OpenGL ES,OpenVG,OpenMAX……),應(yīng)用框架(Qt,GTK,EFL,SDL),多款大型的應(yīng)用軟件(均是開源媒體管理、播放軟件)以及一系列的shell腳本。這些腳本智能化地管理著整個(gè)框架系統(tǒng),可以根據(jù)用戶的配置,自動(dòng)化生成目標(biāo)系統(tǒng),智能地實(shí)現(xiàn)所有的庫(kù)依賴、源代碼下載、配置、編譯以及目標(biāo)系統(tǒng)生成的功能。

Openbricks是一個(gè)開源項(xiàng)目,其源代碼目前由版本控制工具M(jìn)ercurial來(lái)管理。在ubuntu環(huán)境下,我們可以通過命令行的方式(或者通過git的方式)來(lái)獲取到源代碼:hg clone http://hg.Openbricks.org/Openbricks

如圖1所示,源代碼目錄下主要有sources、packages、scripts和build等目錄。其中,scripts目錄下存放控制腳本,以控制整個(gè)系統(tǒng)的運(yùn)作;sources目錄下存放有每個(gè)包的源代碼(壓縮包);packages目錄下存放每個(gè)軟件包的配置腳本、編譯腳本和安裝腳本;build目錄下存放解壓縮后的軟件包源代碼。

圖1 源代碼獲取及目錄層次

2 配置功能

如上文所述,Openbricks內(nèi)部集成有大量的開發(fā)庫(kù),因此在使用這些庫(kù)之前需要進(jìn)行適當(dāng)?shù)呐渲谩T贠penbricks源代碼的根目錄下輸入make menuconfig,即可啟動(dòng)Openbricks配置界面。值得一提的是,Openbricks的智能管理功能會(huì)根據(jù)用戶環(huán)境的不同,來(lái)提示用戶是否需要自動(dòng)下載安裝所需的配置工具,如圖2所示。

圖2 自動(dòng)下載配置工具

在安裝完所需的工具之后,即可出現(xiàn)用戶配置主界面,如圖3所示。我們選擇了框架中眾多軟件中的mythtv,以及目標(biāo)平臺(tái)的cpu、architecture和平臺(tái)等,如果需要進(jìn)一步定制軟件,可以在packets、libs等目錄下進(jìn)行進(jìn)一步的修改。在保存配置文件之后輸入make命令即可進(jìn)行整個(gè)系統(tǒng)的編譯與生成,如果一切順利的話,將會(huì)在binary目錄下生成目標(biāo)系統(tǒng),而mythtv所依賴的Qt、X11、python和perl等眾多庫(kù)則被自動(dòng)下載并且編譯、安裝。默認(rèn)情況下,目標(biāo)系統(tǒng)是以文件系統(tǒng)的形式存在,同時(shí),目標(biāo)系統(tǒng)的Bootloader和kernel也相應(yīng)包含在內(nèi)。由于目前硬件平臺(tái)的多樣性,因此在多數(shù)情況下,kernel還需要進(jìn)一步的移植才能更好地適應(yīng)用戶的目標(biāo)系統(tǒng)。

圖3 用戶配置主界面

3 自動(dòng)化編譯原理

Openbricks之所以能實(shí)現(xiàn)自動(dòng)化的編譯,在于一系列的shell腳本。在開始編譯之后,腳本開始檢查目錄下的所有包,并按照makefile對(duì)時(shí)間規(guī)則的定義以及用戶在配置界面中所作的選擇對(duì)相關(guān)包進(jìn)行編譯。對(duì)于每個(gè)軟件包,在Openbricks框架當(dāng)中均有一系列的目錄與之對(duì)應(yīng)。以zlib包為例,在packet目錄下有一個(gè)zlib文件夾,其中包含有meta、build和install三個(gè)文件,這三個(gè)文件分別記錄了zlib包的版本、依賴、配置和編譯參數(shù)。在script目錄當(dāng)中的編譯安裝腳本會(huì)判斷相關(guān)的軟件包是否已經(jīng)被順利編譯安裝,如果沒有,則會(huì)檢查包的依賴鏈,并進(jìn)行代碼下載、編譯等操作。Openbricks腳本流程圖如圖4所示。

圖4 Openbricks腳本流程圖

其中,檢測(cè)包之間的依賴關(guān)系是通過Linux平臺(tái)下的pkg工具,源代碼下載通過wget工具,其他一些需要用到的工具會(huì)在編譯過程中自動(dòng)下載,系統(tǒng)主機(jī)通常選擇在ubuntu環(huán)境下。

4 基于Openbricks的軟件開發(fā)與發(fā)布

基于Openbricks,可以快速地進(jìn)行軟件的開發(fā)工作。以開發(fā)一個(gè)基于Qt和OpenGL的3D嵌入式圖形程序?yàn)槔陂_發(fā)程序時(shí),我們只希望關(guān)注于應(yīng)用程序本身,而不是受困于Qt、OpenGL的配置、安裝問題。基于Openbricks,我們將應(yīng)用程序以packet的形式添加進(jìn)Openbricks,假設(shè)應(yīng)用程序名叫mythremote,則添加方法如下:

① 運(yùn)行./scripts/newpacket mythremote命 令,將在packet目錄下生成mythremote目錄;

② 在mythremote目錄下編輯meta文件,修改PKG_VERSION、PKG_URL和依賴包等宏變量;

③ 運(yùn)行./scripts/unpacked mythremote命令,測(cè)試是否會(huì)根據(jù)PKG_URL來(lái)自動(dòng)下載相應(yīng)源代碼,并解壓縮到build目錄下的mythremote目錄下;

④ 編輯build文件,增加配置命令;

⑤ 運(yùn)行./scripts/build mythremote命令,即可進(jìn)行源代碼編譯,如果在meta文件下有包依賴的話,則會(huì)先進(jìn)行依賴包的下載、編譯與安裝。

基于Openbricks,我們也可以快速地進(jìn)行軟件的發(fā)布工作,因?yàn)樵创a是集成在Openbricks之中,因此用戶在以源代碼編譯、安裝我們的程序時(shí)不必再去關(guān)心Qt或者OpenGL的問題,只需簡(jiǎn)單地配置,然后一個(gè)指令,即可生成相應(yīng)的目標(biāo)系統(tǒng),實(shí)現(xiàn)了嵌入式Linux軟件的快速、簡(jiǎn)單的發(fā)布。

結(jié) 語(yǔ)

本文討論的基于Openbricks的實(shí)現(xiàn)方法及應(yīng)用的主要技術(shù),使得開發(fā)者可以專注于應(yīng)用相關(guān)的細(xì)節(jié)開發(fā),不用再去關(guān)注硬件、Bootloader、kernel和應(yīng)用框架等。工程實(shí)踐證明這些方法都是可行的,可以較大地提高開發(fā)效率。由于主系統(tǒng)環(huán)境參數(shù)和用戶經(jīng)驗(yàn)的不同等,在首次編譯該系統(tǒng)時(shí)會(huì)遇到一些問題,而且首次編譯系統(tǒng)的時(shí)間也較長(zhǎng)(10個(gè)小時(shí)左右),這也是該產(chǎn)品有待提高之處。

[1]http://www.Openbricks.org/.

[2]http://www.mythtv.org/.

[3]張?jiān)~,向勇,鄭志國(guó).Peta Linux操作系統(tǒng)在 Micro Blaze系統(tǒng)中的移植[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010,10(7).

[4]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008.

[5]文全剛.嵌入式Linux操作系統(tǒng)原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2002:155-169.

[6]亞荷毛爾.構(gòu)建嵌入式Linux系統(tǒng)[M].2版.O'keilly Taiwan公司,譯.北京:中國(guó)電力出版社,2011.

猜你喜歡
嵌入式用戶系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
搭建基于Qt的嵌入式開發(fā)平臺(tái)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
主站蜘蛛池模板: 国产在线精品99一区不卡| 亚洲天堂.com| 国产人人射| 国产成人无码AV在线播放动漫| 色哟哟国产精品| 久久夜色精品国产嚕嚕亚洲av| 粗大猛烈进出高潮视频无码| 亚洲免费福利视频| 国产噜噜噜视频在线观看 | 日日拍夜夜嗷嗷叫国产| 日本福利视频网站| 欧美国产精品不卡在线观看 | 素人激情视频福利| 狠狠色成人综合首页| 亚洲国产亚综合在线区| 伊伊人成亚洲综合人网7777| 国产成人精品18| 亚洲三级色| 色老二精品视频在线观看| 亚洲国产中文精品va在线播放| 国产日韩欧美视频| 亚洲国产欧美自拍| 色综合狠狠操| 91久久偷偷做嫩草影院电| 美女被狂躁www在线观看| 中文字幕 日韩 欧美| 中文字幕亚洲另类天堂| 国产欧美日韩综合一区在线播放| 99在线国产| 婷婷99视频精品全部在线观看| 午夜欧美在线| 美女一级毛片无遮挡内谢| 亚洲一区二区日韩欧美gif| 人妻中文字幕无码久久一区| 不卡无码网| 欧美亚洲激情| 国产一区二区三区夜色| 67194在线午夜亚洲| 日韩在线观看网站| 国产精品视频久| 欧美日韩国产精品va| 国产天天色| 成年人视频一区二区| 欧美成人精品欧美一级乱黄| 成人精品在线观看| 露脸一二三区国语对白| 欧美国产综合色视频| 久久这里只有精品23| 欧美日韩福利| 国产高清毛片| 国产欧美日韩在线在线不卡视频| 熟妇人妻无乱码中文字幕真矢织江 | 国产激情无码一区二区免费| 高清免费毛片| 91在线国内在线播放老师| 国产成人AV综合久久| 欧美日韩国产一级| 亚洲欧美成人在线视频| www欧美在线观看| 在线看片免费人成视久网下载| 亚洲性影院| 69视频国产| 亚洲福利片无码最新在线播放 | 成人精品视频一区二区在线 | 国产玖玖玖精品视频| 丰满人妻中出白浆| 亚洲一级无毛片无码在线免费视频| 国产毛片久久国产| 99久久精品久久久久久婷婷| 免费a级毛片18以上观看精品| AV无码无在线观看免费| 男女男免费视频网站国产| 91久久国产成人免费观看| 国产精品黑色丝袜的老师| 日韩人妻少妇一区二区| 亚洲视频免费在线| 久久综合干| 亚洲无限乱码| 午夜日本永久乱码免费播放片| 色综合天天综合中文网| 亚洲综合18p| 99re在线观看视频|