亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

嵌入式培訓(xùn)

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

時間:2024-10-11 10:44:44 嵌入式培訓(xùn) 我要投稿
  • 相關(guān)推薦

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

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

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

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

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

  用的工具鏈是arm-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è)定編譯器時,就得用/opt/arm-linux-gcc-3.4.1/bin/arm-linux-gcc了。

  二、開源庫的移植

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

  因此,這里先介紹開源庫的移植。

  庫的移植,其實就是對工具鏈自帶的庫進行了擴充。

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

  那么,我們移植完開源庫之后:

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

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

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

  好了,下面說說具體移植步驟。

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

  1. 配置

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

  如何指定這些信息呢,不同的軟件可能會有相同。我們?nèi)绻皇煜,就需要仔細閱讀源碼包中附帶的諸如README、INSTALL等文件。這些文件會告訴我們,如何指定這些信息。

  一般來講,常見的配置方法,是通過 ./configure 命令進行。當然,有些開源包,可能叫./config或其他名字。這并不重要。

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

  以opensll為例。配置命令為:

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

  這就指定了目標類型是linux-elf,工具鏈是arm-linux-gcc。

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

  當然,在配置命令中,我們還可以指定其他選項,以做進一步的定制。

  一般來講,可以通過 ./configure --help 命令查看所支持的可定制選項。

  該命令會輸出所支持的各種選項,選項的含義,以及默認是否打開等信息。

  當然,對于opensll來說,這里是用./config --help 命令。

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

  2. 編譯

  這就簡單了,一般來說,一個make命令搞定

  3. 安裝

  這就簡單了,一般來說,一個make install命令搞定

  對于本例來說,由于指定了安裝路徑為:--prefix=/opt/arm-linux-gcc-3.4.1/

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

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

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

  1. 配置

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

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

  以e2fsprogs-1.42.5為例。配置過程如下(可能相對傳統(tǒng)一點):

  mkdir release

  cd release/

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

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

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

  如果這一步失敗,有兩個原因:

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

  b). 開源應(yīng)用程序的某個功能項所依賴的某個開源庫沒有找到。

  這種問題,有兩個解決辦法:

  一是移植此開源庫,按照前面的方法;

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

  2. 編譯

  這就簡單了,一般來說,一個make命令搞定

  3. 安裝

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

  例如,

  庫文件拷貝到/usr/lib/目錄中。

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

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

  這一步,自己寫點腳本來完成可能更合適。

  因為即使在第1步中,已經(jīng)指定了安裝目錄為單板的根文件系統(tǒng)。

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

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

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

嵌入式系統(tǒng)的分類03-25

嵌入式系統(tǒng)常用術(shù)語08-10

嵌入式系統(tǒng)體系結(jié)構(gòu)01-04

關(guān)于dd命令備份Linux系統(tǒng)的6個例子07-19

軟件工程(與NIIT合作嵌入式培養(yǎng))專業(yè)介紹06-30

Linux認證考試科目02-02

加拿大留學(xué)如何開源節(jié)流02-03

2023嵌入式系統(tǒng)開發(fā)工程師考試綜合編程題08-09

軟件無線電與網(wǎng)絡(luò)技術(shù)的發(fā)展07-16