アプリケーションのビルド - DigitalMediaProfessionals/dv-sdk GitHub Wiki
サンプルアプリケーションのコンパイルはAI FPGA モジュール上で直接できます。
まず、SSH やシリアルコンソールなどでログインしてください。
次に ~/dv-sdk/application/
へ移動して、make
を実行してください。
$ cd ~/dv-sdk/application && make
するとアプリケーションバイナリが ~/dv-sdk/application/bin/
以下に出力されます。
クロスコンパイル
クロスコンパイルにはターゲットCPU 向けのコンパイラが必要です。 AI FPGA モジュールと同じOS(Ubuntu 18.04) でのコンパイルが最も望ましいです。
- クロスコンパイラとツールをホストマシンにインストールします。
$ sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libfreetype6-dev libagg-dev
- GitHub からDV SDK を取得します。(あるいはAI FPGA モジュールからコピーしてもいいです。)
$ git clone https://github.com/DigitalMediaProfessionals/dv-sdk --recurse-submodules
- 必要なライブラリをAI FPGA モジュールからコピーします。AI FPGA モジュールがイーサネットに繋いだ場合は
scp
とrsync
コマンドでできます。
$ scp ubuntu@ai_fpga_module:/usr/lib/libagg.a dv-sdk/application/common/lib/
$ scp ubuntu@ai_fpga_module:/usr/lib/libdmpdv.so dv-sdk/dv-user-driver/
$ mkdir -p ~/zia-rootfs/usr/local
$ rsync -avrx ubuntu@ai_fpga_module:/usr/include :/usr/lib ~/zia-rootfs/usr/
$ rsync -avrx ubuntu@ai_fpga_module:/usr/local/include :/usr/local/lib ~/zia-rootfs/usr/local/
$ rsync -avrx ubuntu@ai_fpga_module:/lib ~/zia-rootfs/
dv-sdk/env.mk
の内容を修正します。
OPT=-O3
SYSROOT=/
ARCH=$(shell gcc -print-multiarch)
ifeq ($(ARCH), arm-linux-gnueabihf)
# For on-board compiling (32-bit ARM)
GPP=g++ -mfp16-format=ieee -march=native -mtune=native
GCC=gcc -mfp16-format=ieee -march=native -mtune=native
else
ifeq ($(ARCH), aarch64-linux-gnu)
# For on-board compiling (64-bit ARM)
GPP=g++ -march=native -mtune=native
GCC=gcc -march=native -mtune=native
else
# For Cross-compiling setup GPP and GCC variables
# Depending on the cross-compiler it might be required to add -static-libstdc++ or -static
# Set SYSROOT variable to the folder with rootfs (only /usr/include /usr/local/include /usr/lib /usr/local/lib /lib are sufficient)
SYSROOT=$(HOME)/zia-rootfs
GPP=aarch64-linux-gnu-g++-7 --sysroot=$(SYSROOT)
GCC=aarch64-linux-gnu-gcc-7 --sysroot=$(SYSROOT)
endif
endif
make
を実行します
$ cd dv-sdk/application && make
注: クロスコンパイラ次第で、クロスコンパイラのランタイム・ライブラリのボードへのコピーや静的リンクの使用など、追加のステップが必要になることがあります。共通のコンパイルオプションは dv-sdk/env.mk
で変更できます。