移植開源軟件到嵌入式Linux系統技術攻略
雖然嵌入式系統是近幾年才風靡起來的,但是這個概念並非新近纔出現。從20世紀七十年代單片機的出現到今天各式各樣的嵌入式微處理器,微控制器的大規模應用,嵌入式系統已經有了近30年的發展歷史。下面是小編整理的移植開源軟件到嵌入式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文件或文件。
當然,凡是單板上用到的/opt/arm-linux-gcc-3.4.1/lib/下面的文件,不管是工具鏈自帶的,還是我們移植的,都需要拷貝到單板的根文件系統的/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系統中的GUI系統的研究與移植介紹
摘要:針對嵌入式Linux系統中幾種常見的GUI(Graphic User Interface)系統,討論嵌入式GUI實現的底層技術方式;詳細分析Microwindows、MiniGUI、Qt/Embedded等三種GUI的實現特點、體系結構、API接口。結合這三種嵌入式GUI在以 -
嵌入式Linux系統概述
寒假是我最喜歡的假期,因爲過上幾天就可以過年,買年貨,今天我跟隨爸爸媽媽一起去買年貨,這讓我興奮的蹦蹦跳跳,高興了很久。到站之後我們看到那裏車水馬龍,我們三個人都快走丟了。我興高采烈的問媽媽現在去買什麼,媽媽回答我 -
如何學習嵌入式Linux系統
嵌入式linux 是將日益流行的Linux操作系統進行裁剪修改,使之能在嵌入式計算機系統上運行的一種操作系統。以下是關於學習嵌入式Linux系統的方法,希望大家認真學習! 第一,學習基本的裸機編程對於學硬件的人而言,必須先 -
關於嵌入式Linux系統基礎知識
由於嵌入式系統只針對一項特殊的任務,設計人員能夠對它進行優化,減小尺寸降低成本。下面是小編收集的嵌入式Linux系統基礎知識,希望大家認真閱讀! 一、嵌入式Linux系統的構成1、硬件2、內核3、應用程序(形成根文件系 -
2017最新嵌入式操作系統uCLinux分析
一款具有甜美氣質的婉約齊劉海髮型,高扎的馬尾辮看起來很清爽,薄薄的齊劉海加上一個墨鏡的搭配很有御姐風範,十分甜美可愛。齊齊的劉海加上髮尾內扣的設計簡直是可愛極了,這樣的造型還提升了時尚感,一副乖乖女的感覺,是不是 -
嵌入式Linux系統安全性問題的解決
目前很多運行在局域網甚至Inteet上的產品如雨後春筍般涌向市場,比如:智能家居、安卓手機等。這些產品在方便用戶的同時也出現一些安全問題,系統置於網絡上相當於暴露給所有人,故對嵌入式產品安全性研究刻不容緩。嵌入式產 -
關於嵌入式Linux系統及其應用前景介紹
摘要:主要分析嵌入式Linux系統應用開發的特點;概述其開發過程和所面臨的挑戰;闡述嵌入式Linux的發展和應用前景,嵌入式Linux系統及其應用前景。關鍵詞:嵌入式Linux 操作系統 應用前景引 言近年來,隨着計算技術、通信技術的 -
嵌入式Linux操作系統中的一些重要概念
嵌入式操作系統(Embedded Operating System,簡稱:EOS)是指用於嵌入式系統的操作系統。下面是嵌入式Linux操作系統中的一些重要概念,爲大家提供參考。 進程的同步(直接制約):synchronism指系統中一些進程需要相互合作,共 -
Linux操作系統成爲嵌入式操作系統的因素
嵌入式系統通常進行大量生產,所以單個的成本節約,能夠隨着產量進行成百上千的放大。下面是小編收集的Linux操作系統成爲嵌入式操作系統的因素,希望大家認真閱讀!在精簡內核在編譯內核之前,首先要明確需要那些驅動和模塊,然 -
嵌入式系統軟件開發技術概述
嵌人式系統開發經過30多年的發展,到現在算是一個成熟的技術了。下面yjbys小編爲大家準備了關於嵌入式系統軟件開發技術的文章,歡迎閱讀。 1 微處理器技術最早的微處理器是4位和8位器件。由於製造技術越來越複雜,集成