嵌入式linux應用程式移植方法總結

2021-06-26 04:47:23 字數 1568 閱讀 7220

前段時間一直在做opencapwap的移植和除錯工作,現在工作已接近尾聲,編寫本文件對前段工作進行乙個總結,分享下opencapwap移植過程中的經驗和感悟。江浩寫的《capwap移植進展.docx》對opencapwap的移植過程有了比較詳細的描述,所以在此就不涉及技術細節了,本文件主要以opencapwap的移植為例,總結嵌入式linux應用程式移植的一般方法和步驟,為以後可能需要的移植工作提供一些的思路。

嵌入式linux應用程式移植的步驟包括:

1、準備好交叉編譯環境

在安裝有linux作業系統的pc上安裝對於平台的交叉編譯器,並將交叉編譯器加到環境變數中,如export path=$path:/opt /toolchain/rsdk-1.3.6-5281-eb-2.6.30-0.9.30/bin, 然後在終端介面裡看交叉編譯器版本,如敲mips-linux-gcc –v,顯示版本號則表示安裝成功。

(交叉編譯器一般是平台廠商提供的,比如我們的交叉編譯器就是mips-linux-gcc,是瑞昱提供的。)

2、準備好源**

準備好需要編譯的源**庫包,如capwap-0.93.3,需要注意的是,不僅需要準備要編譯的源**庫包,還需要準備該原始碼包依賴的包,例如capwap-0.93.3依賴安全加密相關的包openssl和多執行緒相關的包pthread,這些包也需通過編譯成靜態庫或動態庫供主承銷包呼叫。

3、修改makefile

一般的原始碼庫可以通過執行./configure來制定編譯器gcc,目標板的架構已經生產應用程式和庫的目錄。如果沒有configure檔案就需要手動開啟makefile檔案來修改,主要需要修改的地方有:(1)編譯器的型別,(2)需要庫的標頭檔案路徑;(3)需要庫的鏈結路徑(4)生成應用程式的路徑。如opencapwap移植過程,將cc=gcc

行用cc=mips-linux-gcc

替換。4、編譯源**

在原始碼包的主路徑下執行make,除非運氣特別好,一般情況下是會報錯的,需要根據報錯的型別進行相應的修改。常見的報錯型別有:(1)依賴的庫包不支援該cpu架構,需要更換該架構的庫包,如capwap自帶的openssl庫不支援mips。#error "this openssl-devel package does not work your architecture?"(2)依賴的庫沒有經過交叉編譯就拿來用了,如#error「./static/libssl.a: could not read symbols: file in wrong format」即libssl.a庫檔案格式是x86架構下的不支援mips架構。(3)源**中有c語言方面的錯誤,一般是和交叉編譯器版本不匹配引起的。

一步步解決完這些錯誤後,然後終於可以生產對應目標板的應用程式了。但是生產相應的應用程式才是萬里長征的第一步,讓程式正確的執行才是最終目標。

5、安裝應用程式

6、執行除錯應用程式

除錯應用程式讓其能夠正確的工作,才是移植工作最重要的部分,這需要對應用程式的流程很熟悉,然後通過列印日誌的方法看程式執行的路徑,分析日誌與正確的流程的差異來確定出錯的地方。常見的出錯地方有:(1)記憶體分配函式;(2)系統位數不一樣;(3)位元組順序問題(大端小端);(4)浮點數的表示問題等。如我們在移植過程中遇到的malloc函式行為不同的問題。以上都是平時移植過程中需要重點注意的地方。

嵌入式應用程式開發

嵌入式應用程式開發 實驗目的 1.編寫程式,用交叉工具鏈編譯連線 實驗原理 1.嵌入式應用程式的開發一般都在宿主機平台上進行,利用交叉編譯器編譯,生成可以在目標平台上執行的可執行 本實驗使用的交叉編譯器是arm linux gcc 實驗內容 l include include int main l2...

嵌入式LINUX應用程式開發詳解

本書主要分為3個部分,包括linux基礎 搭建嵌入式linux環境和嵌入式linux的應用開發。linux基礎部分從linux的安裝過程 基本操作命令講起,為linux初學者能快速入門提供了保證。接著系統地講解了嵌入式linux的環境搭建,以及嵌入式linux的i o與檔案系統的開發 程序控制開發 ...

嵌入式linux開機應用程式自啟動

注意 etc profile檔案只在 登陸使用者後 才會執行。並且每個使用者登陸,都會進行一次。由 etc init.d rcs etc init.d rc知道,需要新增的程式可修改rc檔案即可。在rc末尾新增如下 add by qiuweibo 2014.5.21 start if e etc i...