2018/01/31

如何在 PC 編譯 open source project 給 raspberry pi,以 NTP 為例

Why

很多 open source project 都很大,放在 pi 編譯有兩個缺點,第一很費時,第二很浪費空間。所以在 PC 編譯好之後再 install 到 pi 會是一個很好的選擇。如果 open source 專案只有提供 Makefile,那就直接把編譯相關的指向到 pi 的 tools。很多大型專案會提供 configure 來進行編譯設定,那就需要透過 configure 來設定 cross 了。以下就透過 ntp 這個專案來說明,其他專案也大同小異。

How

首先要下載原始碼,如果有更新的版本,請自行調整。
wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.8p10.tar.gz

參考 Cross-compilingNTP host 是目標機器,build 是編譯機器,所以我們要分別在 PC 跟 pi 上面執行 config.guess
PC: x86_64-unknown-linux-gnu
pi: armv7l-unknown-linux-gnueabihf
知道 host 跟 build 該怎麼填之後,還要設定一些編譯要用的環境變數
export RPI_BASE=${HOME}/rpi
export CROSS=${RPI_BASE}/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
export CC=${CROSS}gcc
export AR=${CROSS}ar
export LD=${CROSS}ld
export AS=${CROSS}as
再來就要準備編譯了
mkdir target_pi
cd target_pi
../configure --host=armv7l-unknown-linux-gnueabihf --build=x86_64-unknown-linux-gnu --with-yielding-select=yes
make
make DESTDIR=`pwd`/Built install

跑完之後,就會在 Built 裡面建立需要安裝的檔案,tar 起來到 pi 的跟目錄下解 tar 就完成安裝了


沒有留言: