アプリケーションのビルド - 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) でのコンパイルが最も望ましいです。

  1. クロスコンパイラとツールをホストマシンにインストールします。
$ sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libfreetype6-dev libagg-dev
  1. GitHub からDV SDK を取得します。(あるいはAI FPGA モジュールからコピーしてもいいです。)
$ git clone https://github.com/DigitalMediaProfessionals/dv-sdk --recurse-submodules
  1. 必要なライブラリをAI FPGA モジュールからコピーします。AI FPGA モジュールがイーサネットに繋いだ場合はscprsyncコマンドでできます。
$ 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/
  1. 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
  1. make を実行します
$ cd dv-sdk/application && make

注: クロスコンパイラ次第で、クロスコンパイラのランタイム・ライブラリのボードへのコピーや静的リンクの使用など、追加のステップが必要になることがあります。共通のコンパイルオプションは dv-sdk/env.mk で変更できます。