日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

嵌入式linux系统移植的四大步骤_如何移植开源软件到嵌入式Linux系统

發布時間:2023/12/19 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式linux系统移植的四大步骤_如何移植开源软件到嵌入式Linux系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們知道,在PC機Linux上,安裝開源軟件,一般來講,大多是如下幾個步驟就搞定了。

tar -xzf ?open_source_software.tar.gz

cd ? ? ? open_source_software

./configure

make

make install

但是,如果要將開源軟件移植到嵌入式Linux單板上運行,情況卻略有不同。

本文就來說說這項工作如何進行。不當之處,還請大家斧正。

其實,無論是在PC機Linux上安裝開源軟件,還是將開源軟件移植到嵌入式Linux單板上,其操作過程,在本質上是完全相同的。只是在PC機Linux上,各項事宜默認就得到了正確的組合。而對于嵌入式Linux單板,我們則需要明確地為這些事宜構造正確的組合。下面,我們就來看看具體的移植過程。

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

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

我們這里假設目標單板是arm處理器,運行Linux系統,

用的工具鏈是arm-linux-gcc-3.4.1,工具鏈安裝路徑是/opt/arm-linux-gcc-3.4.1。

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

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

二、開源庫的移植

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

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

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

例如,假設上述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文件,不管是工具鏈自帶的,還是我們移植的,都需要拷貝到單板的根文件系統的/usr/lib/目錄中。

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

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

1. 配置

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

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

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

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

以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目錄及lib目錄的父目錄。因為頭文件及編譯后的庫文件,需要分別安裝到include與lib目錄中。

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

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

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

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

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

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的開源應用程序了。

三、開源應用程序的移植

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

1. 配置

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

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

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

mkdir release

cd release/

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

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

例如,帶上參數 LDFLAGS=-static從而指定靜態鏈接。

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

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

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

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

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

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

2. 編譯 這就簡單了,一般來說,一個make命令搞定 3. 安裝 這一步,需要將上述編譯出的可執行文件、程序運行需要用到的配置文件、程序運行需要用到的所有動態庫文件(無論是工具鏈自帶的庫文件,還是我們移植的庫文件),都拷貝到單板的根文件系統的相應的目錄下就行了。 例如, 庫文件拷貝到/usr/lib/目錄中。 配置文件拷貝到/etc/下面合適的路徑中。 可執行文件拷貝到/bin或/usr/bin等目錄中。 這一步,自己寫點腳本來完成可能更合適。 因為即使在第1步中,已經指定了安裝目錄為單板的根文件系統。 make install命令也未必好用,他可能會安裝過多的東西(如man手冊頁等,單板上并不需要),或者某些文件安裝的路徑未必正確,或者不會安裝相應的庫文件。

總結

以上是生活随笔為你收集整理的嵌入式linux系统移植的四大步骤_如何移植开源软件到嵌入式Linux系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。