中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      移植開(kāi)源軟件到嵌入式Linux系統(tǒng)技術(shù)攻略

      時(shí)間:2024-05-27 22:50:32 嵌入式培訓(xùn) 我要投稿
      • 相關(guān)推薦

      移植開(kāi)源軟件到嵌入式Linux系統(tǒng)技術(shù)攻略

        雖然嵌入式系統(tǒng)是近幾年才風(fēng)靡起來(lái)的,但是這個(gè)概念并非新近才出現(xiàn)。從20世紀(jì)七十年代單片機(jī)的出現(xiàn)到今天各式各樣的嵌入式微處理器,微控制器的大規(guī)模應(yīng)用,嵌入式系統(tǒng)已經(jīng)有了近30年的發(fā)展歷史。下面是小編整理的移植開(kāi)源軟件到嵌入式Linux系統(tǒng)技術(shù)攻略,歡迎大家參考!

        一、在PC機(jī)Linux上安裝合適的交叉編譯工具鏈。

        這一步很簡(jiǎn)單,一般就是將工具鏈的壓縮包解壓到某個(gè)路徑下,就完成了安裝。

        我們這里假設(shè)目標(biāo)單板是arm處理器,運(yùn)行Linux系統(tǒng),

        用的工具鏈?zhǔn)莂rm-linux-gcc-3.4.1,工具鏈安裝路徑是/opt/arm-linux-gcc-3.4.1。

        并且,為了使用方便,我們已經(jīng)將/opt/arm-linux-gcc-3.4.1/bin目錄添加到PATH環(huán)境變量中了。這樣就可以直接使用arm-linux-gcc、arm-linux-ld等命令了。

        如果不這樣做的話,后面使用/設(shè)定編譯器時(shí),就得用/opt/arm-linux-gcc-3.4.1/bin/arm-linux-gcc了。

        二、開(kāi)源庫(kù)的移植

        由于有些開(kāi)源應(yīng)用程序本身又依賴于一些開(kāi)源庫(kù)。因此,我們的移植步驟是,先移植開(kāi)源庫(kù),再移植開(kāi)源應(yīng)用程序。不然的話,開(kāi)源應(yīng)用程序的編譯就會(huì)成問(wèn)題。

        因此,這里先介紹開(kāi)源庫(kù)的移植。

        庫(kù)的移植,其實(shí)就是對(duì)工具鏈自帶的庫(kù)進(jìn)行了擴(kuò)充。

        例如,假設(shè)上述arm工具鏈的stdio.h文件路徑為/opt/arm-linux-gcc-3.4.1/include/stdio.h

        那么,我們移植完開(kāi)源庫(kù)之后:

        /opt/arm-linux-gcc-3.4.1/include/下面就會(huì)多出一些頭文件。

        /opt/arm-linux-gcc-3.4.1/lib/下面就會(huì)多出一些.a文件或.so文件。

        當(dāng)然,凡是單板上用到的/opt/arm-linux-gcc-3.4.1/lib/下面的.so文件,不管是工具鏈自帶的,還是我們移植的,都需要拷貝到單板的根文件系統(tǒng)的/usr/lib/目錄中。

        好了,下面說(shuō)說(shuō)具體移植步驟。

        假設(shè)我們已經(jīng)獲取并解壓了開(kāi)源庫(kù)的源碼包,并且在shell中已經(jīng)進(jìn)入了源碼包的根目錄。接下來(lái)的工作,分三步進(jìn)行。

        1. 配置

        注意,這是最關(guān)鍵的一步。在這一步中,我們要指定諸如目標(biāo)單板的操作系統(tǒng)、CPU、工具鏈等信息。

        如何指定這些信息呢,不同的軟件可能會(huì)有相同。我們?nèi)绻皇煜ぃ托枰屑?xì)閱讀源碼包中附帶的諸如README、INSTALL等文件。這些文件會(huì)告訴我們,如何指定這些信息。

        一般來(lái)講,常見(jiàn)的配置方法,是通過(guò) ./configure 命令進(jìn)行。當(dāng)然,有些開(kāi)源包,可能叫./config或其他名字。這并不重要。

        這些configure通常都是很大的shell腳本,應(yīng)該都是用自動(dòng)化工具生成的。因此,我們不用費(fèi)力去讀他的內(nèi)容。

        以opensll為例。配置命令為:

        ./config --prefix=/opt/arm-linux-gcc-3.4.1/ linux-elf:arm-linux-gcc

        這就指定了目標(biāo)類型是linux-elf,工具鏈?zhǔn)莂rm-linux-gcc。

        安裝路徑是:/opt/arm-linux-gcc-3.4.1/。注意,這個(gè)路徑是交叉工具鏈include目錄及l(fā)ib目錄的父目錄。因?yàn)轭^文件及編譯后的庫(kù)文件,需要分別安裝到include與lib目錄中。

        當(dāng)然,在配置命令中,我們還可以指定其他選項(xiàng),以做進(jìn)一步的定制。

        一般來(lái)講,可以通過(guò) ./configure --help 命令查看所支持的可定制選項(xiàng)。

        該命令會(huì)輸出所支持的各種選項(xiàng),選項(xiàng)的含義,以及默認(rèn)是否打開(kāi)等信息。

        當(dāng)然,對(duì)于opensll來(lái)說(shuō),這里是用./config --help 命令。

        如果這一步失敗,通常是編譯系統(tǒng)依賴的某個(gè)工具沒(méi)找到。這個(gè)好辦,安裝一下就是了。

        2. 編譯

        這就簡(jiǎn)單了,一般來(lái)說(shuō),一個(gè)make命令搞定

        3. 安裝

        這就簡(jiǎn)單了,一般來(lái)說(shuō),一個(gè)make install命令搞定

        對(duì)于本例來(lái)說(shuō),由于指定了安裝路徑為:--prefix=/opt/arm-linux-gcc-3.4.1/

        因此,頭文件(例如,openssl/ssl.h)及編譯后的庫(kù)文件(如libcrypto.a libssl.a),會(huì)分別被安裝到/opt/arm-linux-gcc-3.4.1/include 與 /opt/arm-linux-gcc-3.4.1/lib目錄中。這樣一來(lái),就相當(dāng)于擴(kuò)充了/opt/arm-linux-gcc-3.4.1自帶的庫(kù)。接下來(lái),就可以編譯使用了opensll的開(kāi)源應(yīng)用程序了。

        三、開(kāi)源應(yīng)用程序的移植

        假設(shè)我們已經(jīng)獲取并解壓了開(kāi)源應(yīng)用程序的源碼包,并且在shell中已經(jīng)進(jìn)入了源碼包的根目錄。接下來(lái)的工作,也分三步進(jìn)行。

        1. 配置

        和開(kāi)源庫(kù)的移植類似。在這一步中,我們要指定諸如目標(biāo)單板的操作系統(tǒng)、CPU、工具鏈等信息。

        如果不熟悉,同樣需要需要仔細(xì)閱讀源碼包中附帶的諸如README、INSTALL等文件。這些文件會(huì)告訴我們,如何指定這些信息。

        以e2fsprogs-1.42.5為例。配置過(guò)程如下(可能相對(duì)傳統(tǒng)一點(diǎn)):

        mkdir release

        cd release/

        ../configure --host=arm-linux CC=arm-linux-gcc

        當(dāng)然,我們同樣可以帶上更多的參數(shù),做更多的定制。

        例如,帶上參數(shù) LDFLAGS=-static從而指定靜態(tài)鏈接。

        如果這一步失敗,有兩個(gè)原因:

        a). 編譯系統(tǒng)依賴的某個(gè)工具沒(méi)找到。這個(gè)好辦,安裝一下就是了。

        b). 開(kāi)源應(yīng)用程序的某個(gè)功能項(xiàng)所依賴的某個(gè)開(kāi)源庫(kù)沒(méi)有找到。

        這種問(wèn)題,有兩個(gè)解決辦法:

        一是移植此開(kāi)源庫(kù),按照前面的方法;

        二是通過(guò) --disable-funcname關(guān)閉此功能項(xiàng),如果確實(shí)用不到該功能項(xiàng)的話。

        2. 編譯

        這就簡(jiǎn)單了,一般來(lái)說(shuō),一個(gè)make命令搞定

        3. 安裝

        這一步,需要將上述編譯出的可執(zhí)行文件、程序運(yùn)行需要用到的配置文件、程序運(yùn)行需要用到的所有動(dòng)態(tài)庫(kù)文件(無(wú)論是工具鏈自帶的庫(kù)文件,還是我們移植的庫(kù)文件),都拷貝到單板的根文件系統(tǒng)的相應(yīng)的目錄下就行了。

        例如,

        庫(kù)文件拷貝到/usr/lib/目錄中。

        配置文件拷貝到/etc/下面合適的路徑中。

        可執(zhí)行文件拷貝到/bin或/usr/bin等目錄中。

        這一步,自己寫(xiě)點(diǎn)腳本來(lái)完成可能更合適。

        因?yàn)榧词乖诘?步中,已經(jīng)指定了安裝目錄為單板的根文件系統(tǒng)。

        make install命令也未必好用,他可能會(huì)安裝過(guò)多的東西(如man手冊(cè)頁(yè)等,單板上并不需要),或者某些文件安裝的路徑未必正確,或者不會(huì)安裝相應(yīng)的庫(kù)文件。

      【移植開(kāi)源軟件到嵌入式Linux系統(tǒng)技術(shù)攻略】相關(guān)文章:

      嵌入式系統(tǒng)軟件開(kāi)發(fā)技術(shù)概述03-21

      關(guān)于嵌入式Linux系統(tǒng)基礎(chǔ)知識(shí)03-07

      嵌入式Linux詳解03-29

      嵌入式系統(tǒng)接口技術(shù)02-27

      怎么學(xué)習(xí)嵌入式linux03-09

      嵌入式linux入門(mén)學(xué)習(xí)規(guī)劃03-09

      嵌入式系統(tǒng)開(kāi)發(fā)核心技術(shù)03-20

      Linux系統(tǒng)下ftp的管理03-05

      Linux操作系統(tǒng)概述03-06

      主站蜘蛛池模板: 永和县| 国产精品久久久久亚洲| 亚洲乱码中文字幕综合69堂| 熟女少妇av免费观看| 国产日韩午夜视频在线观看 | 日韩精品中文字幕综合| 亚洲中文字幕有综合久久| 中文日产幕无线码一区中文| 韩国主播av福利一区二区| 万宁市| av最新版天堂在资源在线| 国产精品玖玖资源站大全| 最新永久免费AV网站| 亚洲高清美女久久av| 风流少妇一区二区三区| 久久精品国产88久久综合| 强d乱码中文字幕熟女1000部| 97久久综合区小说区图片专区 | 人片在线观看无码| 亚洲一区亚洲二区亚洲三区| 青浦区| 国产精品成人久久一区二区| 久久久99久久久国产自输拍| 无码 免费 国产在线观看91 | 麻豆av一区二区天堂| 国产AV无码无遮挡毛片| 一区二区三区在线视频免费观看| 高清国产美女av一区二区| 蜜臀av国内精品久久久较| 无码制服丝袜中文字幕| 亚洲成人激情在线影院| 蜜臀av中文人妻系列| 国产毛片三区二区一区| 中文字幕人妻av蜜臀| 无码啪啪人妻| 噜噜噜色97| 久久精品亚洲精品毛片| 亚洲一区精品一区在线观看| 国产一区二区亚洲一区二区三区 | 无码成人AV在线一区二区| 亚洲中文字幕女同一区二区三区|