centos上用cmake交叉編譯樹莓派版的dlib

 

人工智能大火,自然大家都會想要在樹莓派上跑個模型折騰折騰。在樹莓派上有跑TF的,有跑CAFFE的,自然少不了dlib,想到dlib性能比較好,我也想在樹莓派上試試dlib,但是網上查了半天,發下樹莓派上跑dlib的,基本都是靠在樹莓派上直接編譯dlib源碼生成的庫來弄,而dlib編譯又需要很多的內存,樹莓派的1G內存有顯得很緊張,所以網上的方法基本都是增加swap區,把tf卡上的空間用來和內存交換,這麼做效率低不說,還很傷tf卡,所以我決定另闢蹊徑,用交叉編譯的方法去解決,從此跳入了一個大坑。

首先交叉編譯需要環境,這個好辦,樹莓派的交叉編譯環境還是很成熟的,github上有工具倉庫,https://github.com/raspberrypi/tools/,不過windows上的交叉編譯以失敗告終,試過mingw, cygwin,都沒成功,還折騰了很久很久,只能轉向用linux交叉編譯,畢竟平臺相似,坑少些。於是我轉向採用我的centos 7的機器交叉編譯。

主要參考的是這篇:https://stackoverflow.com/questions/19162072/how-to-install-the-raspberry-pi-cross-compiler-on-my-linux-host-machine

先弄清交叉編譯的原理,因爲我的centos是x86的架構,而樹莓派是arm的,所以不通過交叉編譯,在其中一個平臺上編譯的程序顯然無法在另一個平臺上運行,畢竟指令集都不一樣,即使操作系統一樣,那隻代表操作系統的線程管理、內存管理、文件系統等一樣,但是程序執行還依賴硬件環境。所以交叉編譯就是使用專用的編譯器,在主機平臺(centos)上編譯目標平臺(raspberry pi)上的程序,這裏專用編譯器就是https://github.com/raspberrypi/tools/裏的GCC,經過改造,使得該GCC能在特定主機平臺運行,並能夠編譯出在目標平臺上運行的程序。所以交叉編譯第一步就是是的編譯的命令能通過交叉編譯工具裏的GCC去執行。

對了,前述參考鏈接裏有說到,需要先安裝的軟件

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