亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        大型嵌入式軟件的自動化交叉編譯*

        2012-06-25 02:46:08安峰
        關(guān)鍵詞:源代碼腳本嵌入式

        安峰

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

        安峰(工程師),主要研究領(lǐng)域為嵌入式圖像處理。

        引 言

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

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

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

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

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

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

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

        2 配置功能

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

        圖2 自動下載配置工具

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

        圖3 用戶配置主界面

        3 自動化編譯原理

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

        圖4 Openbricks腳本流程圖

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

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

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

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

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

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

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

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

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

        結(jié) 語

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

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

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

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

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

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

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

        猜你喜歡
        源代碼腳本嵌入式
        人工智能下復(fù)雜軟件源代碼缺陷精準校正
        計算機仿真(2023年8期)2023-09-20 11:23:42
        酒駕
        基于TXL的源代碼插樁技術(shù)研究
        安奇奇與小cool 龍(第二回)
        數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
        電子測試(2018年14期)2018-09-26 06:04:24
        軟件源代碼非公知性司法鑒定方法探析
        搭建基于Qt的嵌入式開發(fā)平臺
        快樂假期
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        揭秘龍湖產(chǎn)品“源代碼”
        欧美日韩在线免费看| 国产精品熟女一区二区| 少妇精品亚洲一区二区成人| 无码日韩精品一区二区免费暖暖| 2019最新中文字幕在线观看| 无人视频在线观看免费播放影院 | 免费无遮挡无码永久视频| 少妇被粗大的猛烈进出免费视频 | 永久免费中文字幕av| 国产av麻豆精品第一页| 丝袜美腿视频一区二区| 国产精品麻豆va在线播放| 亚洲av日韩av在线观看| 少妇人妻偷人精品视蜜桃| 黄色网址国产| 国内精品91久久久久| 一区二区三区日本在线| 日本九州不卡久久精品一区| 国产成人精品免费久久久久 | 九九99久久精品国产| 午夜短无码| 最大色网男人的av天堂| 久久99人妖视频国产| 国产性自爱拍偷在在线播放| 久久99精品久久水蜜桃| 国产精品福利视频一区| 免费 无码 国产精品| 人妖系列在线免费观看| 亚洲写真成人午夜亚洲美女| 久久久久亚洲av综合波多野结衣| 久精品国产欧美亚洲色aⅴ大片| 麻豆国产人妻欲求不满| 国产美女裸身网站免费观看视频| 国产亚洲激情av一区二区| 亚洲熟女一区二区三区250p| av无码一区二区三区| 无码一区二区三区老色鬼| 人妻少妇无码中文幕久久| 国产伦精品一区二区三区在线| 日本精品久久不卡一区二区| 99久久99久久久精品齐齐|