paho-mqtt移植,交叉編譯環境庫移植。

     爲了讓linux開發板運行mqttclient服務,需要移植mqtt庫,一撥三折。移植過程記憶深刻,在這裏記錄下。

庫移植

庫移植就是將src源文件編譯生成與開發環境適配的動態庫,靜態庫,安裝到指定庫路徑搜索目錄下,列如linux下usr/include(頭文件),usr/lib(靜態庫和動態庫)下,這樣寫程序編譯時,就能正確的找到庫文件。

1下載源文件     

源文件下載地址:https://projects.eclipse.org/projects/iot.paho/downloads
源文件中README.md有介紹怎麼編譯源碼。

2安裝libssl-Dev(OpenSSL)依賴庫以及cmake工程管理工具

3創建生成文件目錄,便於管理
    在源文件下CMakefile.tx同級目錄下創建一個文件夾bulid(名字無所謂,主要是存放編譯後生產的文件)

mkdir     build

cd    build

4,指定交叉編譯器,創建makefile
通過 -DCMAKE_C_COMPILER指定交叉編譯器,以下是我的交叉編譯器目錄,同時你也可以指定庫安裝目錄,這樣就可以不用手動cp到庫搜索目錄中了,提前說明我沒有使用openssl加密,如果你要使用ssl,請自行查看REAMED.md,通cmake進行編譯源碼:

cmake -DCMAKE_C_COMPILER=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc ..

末尾.. 表示在上級目錄查找CMAKElist.txt文件,通過此命令就會產生對應的Makefile文件.

5編譯源碼
  直接make

6 cp頭文件到頭文件目錄中,庫文件到庫搜索目錄中,這裏說明下,如果先前指定了安裝目錄,應該直接通過make install就可以了,而我沒指定,需要cp.還有最重要的事是,交叉編譯器的搜索目錄跟我們操作系統上路徑不一樣。通過以下命令查看交叉編譯器的搜索目錄,特別注意要對應自己的交叉編譯器。

echo 'main(){}'|arm-linux-gnueabuhf-gcc -E -v -  

 

include對應頭文件目錄,LIBRARY_PATH對應庫路徑(*so,*.a),從中隨便選取對應目錄,將文件cp到對應目錄上
 

7 終端ldconfig下,該命令刷新動態鏈接庫名字列表,就是讓系統知道有新的庫添加進來了,不然會出現undefine  *****現象.

到這裏庫移植就結束了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章