實操交叉編譯libserial C 串列埠庫

2021-09-30 10:28:41 字數 1116 閱讀 5436

對應的編譯好的樹莓派版本如下:

首先,最近我在搞乙個用樹莓派的東東,各種原因下使用樹莓派官方提供的工具鏈進行編譯。

有乙個用到的庫不在標準工具鏈裡面,so i'd cross compile it

根據man seriaport.h得到的手冊頁,下方有提供給libserial的字樣。那麼就google libserial了。

好嘛,反正最終是找到libserial的原始碼了,這東西想想也應該是開源的。

從原始碼編譯到對應庫的步驟如下:

1、首先不急著準備交叉編譯環境。我們先得在x86這種標準環境下試驗**。

2、命令列下輸入指令進行編譯前的配置:./configure

3、安裝

python-sip-dev,(apt-get或者pacman工具安裝即可)

4、解決其它依賴問題,直至make可以進行編譯。

5、make時很可能會產生編譯錯誤,此時如果你使用的是0.6rc版本的話,可能會提示你getpid()未宣告(not declared)。那麼man getpid,    再檢查原始碼,發現果然是標頭檔案沒有加進去,#include 結束,谷歌也會告訴你這樣幹。

6、以上問題都解決之後,make指令順利執行完成。你應該可以得到x86平台下使用的libserial.so.0.0.0這個檔案。

7、現在可以準備交叉編譯了。

8、準備交叉編譯環境,即export各種變數等等,直至發現可以找到arm-linux字首的編譯器。

9、重新進行編譯前的配置: 

./configure --host=arm編譯器字首 --target=arm-c++編譯器

例如樹莓派下是:

./configure --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf-g++

10、成功配置完成的話就有可用的makefile生成。此時make吧。

11、make完成之後不要按readme裡面的繼續make install,這裡make install沒啥用。把src/.libs/libsirial.so.0.0.0拷出來。這就是目標了。

12、並且src/.libs/libserial.a這個檔案則是相應的靜態庫。

至於標頭檔案?src裡面各種,隨便用就成。 

編譯 交叉編譯

交叉編譯含義 是指在乙個平台上生成另乙個平台上的可執行 同乙個體系結構可以執行不同的作業系統,同樣乙個作業系統也可以在不同的體系結構上執行 例 常說的x86 linux平台 指inter x86體系結構及linux for x86作業系統 x86 winnt平台 指inter x86體系結構及win...

交叉編譯(2) 交叉編譯鏈

什麼是交叉編譯鏈 明白了什麼是交叉編譯,那我們來看看什麼是交叉編譯鏈。首先編譯過程是按照不同的子功能,依照先後順序組成的乙個複雜的流程,如下圖 那麼編譯過程包括了預處理 編譯 彙編 鏈結等功能。既然有不同的子功能,那每個子功能都是乙個單獨的工具來實現,它們合在一起形成了乙個完整的工具集。同時編譯過程...

交叉編譯 Go 交叉編譯 跨平台編譯

golang 支援交叉編譯,在乙個平台上生成另乙個平台的可執行程式 cgo enabled 0 goos linux goarch amd64 go build main.go cgo enabled 0 goos windows goarch amd64 go build main.go cgo ...