...
external/build/sample/docker/Dockerfileの以下の記述を削除してください。
6行目: ENV http_proxy=http://proxy.mei.co.jp:8080/ https_proxy=http://proxy.mei.co.jp:8080/external/build/sample/docker/docker_volume/module_compile.shの以下の記述を修正してください。
4行目:
変更前:NUMPY_ARCHIVES=v1.19.4.tar.gz
変更後:NUMPY_ARCHIVES=numpy-1.19.4.tar.gz
8行目:
変更前:OPENCV_ARCHIES=opencv-3.4.7.zip
変更後:OPENCV_ARCHIVES=opencv-3.4.7.zip
このチュートリアルでは、SDKのインストールディレクトリを${SDK_DIR}
として記載します。
目次
...
Table of Contents | ||||
---|---|---|---|---|
|
...
Code Block | ||
---|---|---|
| ||
$ cd ${SDK_DIR}/external/build/sample/docker/
$ docker build -t compile/ubuntu-rel:0.1 . |
...
Note |
---|
Dockerfileが存在するディレクトリに、以下の2ファイルが存在することを確認してください。
これらのファイルはPythonモジュール作成時に必要であるため、削除しないでください。 |
Pythonモジュールをコンパイルする(Numpy, OpenCV)
...
手順
AdamApp用Pythonモジュールは、以下の手順で作成します。
${SDK_DIR}/external/build/sample/docker/docker_volumeディレクトリにソースファイルを配置する。
${SDK_DIR}/external/build/sample/docker/docker_volume/module_compile.sh にコンパイル手順を記載する。
dockerを実行し、コンパイルを行う。
${SDK_DIR}/external/build/sample/docker/docker_volume/install_pathディレクトリに作成されたモジュールが配置される。
...
NumpyとOpenCVのソースコードを以下URLからダウンロードしてください。
このチュートリアルでは、Numpy 1.14.9、OpenCV 3.4.7を使用します。
ダウンロードするバージョンは、使用する機能に合わせて選択してください。
Numpy 1.14.9:
https://github.com/numpy/numpy/archive/v1.19.4.tar.gz
OpenCV 3.4.7:
ダウンロードしたファイルは、externalダウンロードしたファイルは、${SDK_DIR}/external/build/sample/docker/docker_volumeディレクトリに配置してください。
コンパイル手順ファイルを更新する
${SDK_DIR}/external/build/sample/docker/docker_volume/module_compile.shファイルに、コンパイル手順を記載します。
Info |
---|
コンパイル手順を更新するときは、以下にご注意ください。
|
...
Dockerを用いてNumPyモジュールとOpenCVモジュールをコンパイルします。
${SDK_DIR}/external/build/sample/docker ディレクトリでDockerを実行してください。
...
作成されたモジュールを、AdamAppで使用できるように配置します。
チュートリアルではsrcチュートリアルでは${SDK_DIR}/src/adamapp-py/jpeg_appを例とします。
...
NumPyモジュールは以下のディレクトリにインストールされています。
${SDK_DIR}/external/build/sample/docker/docker_volume/install_path/lib/python3.7/site-packages/numpy-1.19.4-py3.7-linux-aarch64.egg/numpy
ディレクトリ構成そのままで、AdamAppソースディレクトリにコピーしてください。
${SDK_DIR}/src/adamapp-py/jpeg_app/python/site-packages
Code Block |
---|
$ cp -R ${SDK_DIR}/external/build/sample/docker/docker_volume/install_path/lib/python3.7/site-packages/numpy-1.19.4-py3.7-linux-aarch64.egg/numpy ${SDK_DIR}/src/adamapp-py/jpeg_app/python/site-packages |
コピー後のディレクトリ構成は以下のようになります。
${SDK_DIR}/src/adamapp-py/jpeg_app/python/site-packages/numpy
...
OpenCV Python用モジュールは以下のディレクトリにインストールされています。
${SDK_DIR}/external/build/sample/docker/docker_volume/install_path/lib/python3.7/dist-packages/cv2
ディレクトリ構成そのままで、AdamAppソースディレクトリにコピーしてください。
${SDK_DIR}/src/adamapp-py/jpeg_app/python/site-packages
Code Block |
---|
$ cp -R ${SDK_DIR}/external/build/sample/docker/docker_volume/install_path/lib/python3.7/dist-packages/cv2 ${SDK_DIR}/src/adamapp-py/jpeg_app/python/site-packages |
コピー後のディレクトリ構成は以下のようになります。
${SDK_DIR}/src/adamapp-py/jpeg_app/python/site-packages/cv2
...
OpenCVライブラリは以下のディレクトリにインストールされています。
${SDK_DIR}/external/build/sample/docker/docker_volume/install_path/lib
libopencv_world.so.3.4.7を以下のディレクトリにコピーしてください。
例)src例)${SDK_DIR}/src/adamapp-py/jpeg_app/external/lib/aarch64-linux-gnu/
Code Block |
---|
$ cp -R ${SDK_DIR}/external/build/sample/docker/docker_volume/install_path/lib/libopencv_world.so.3.4.7 ${SDK_DIR}/src/adamapp-py/jpeg_app/external/external/lib/aarch64-linux-gnu |
...
Code Block | ||
---|---|---|
| ||
$ cd ${SDK_DIR}/src/adamapp-py/jpeg_app/external/lib/aarch64-linux-gnu/
$ ln -s libopencv_world.so.3.4.7 libopencv_world.so.3.4
$ ln -s libopencv_world.so.3.4 libopencv_world.so |
...
Code Block | ||
---|---|---|
| ||
$ cd ${SDK_DIR}/src/adamapp-py/jpeg_app/python/site-packages/
$ find . -name *pycache* -print | xargs rm -rf |
...
Code Block | ||
---|---|---|
| ||
$ cd ${SDK_DIR}/src/adamapp-py/jpeg_app/external/lib/aarch64-linux-gnu/
$ aarch64-linux-gnu-strip --strip-debug libopencv_world.so.3.4.7 |
Pythonモジュールをコンパイルする(SQLite)
...
ソースコードをダウンロードする
ソースコードを以下URLからダウンロードしてください。
このチュートリアルでは、例として3.40.0を使用します。
ダウンロードするバージョンは、使用する機能に合わせて選択してください。
ダウンロードしたファイルは、${SDK_DIR}/external/build/sample/docker/docker_volumeディレクトリに配置してください。
コンパイル手順ファイルを更新する
${SDK_DIR}/external/build/sample/docker/docker_volume/module_compile.shファイルに、コンパイル手順を記載します。
下記の内容をコピーしてください。
Code Block |
---|
#!/bin/sh -x
HOME_PATH=/home/docker
LIB_INSTALL_DIR=${HOME_PATH}/install_path
SQLITE_ARCHIVES=sqlite-autoconf-3400000.tar.gz
SQLITE_DIR=sqlite-autoconf-3400000
SQLITE_BUILD_DIR=sqlite-autoconf-3400000/build
PYTHONPATH=$PYTHONPATH:${NUMPY_SITE_PACKAGES}
export PYTHONPATH
PYTHON_ARCHIVES=Python-3.7.9.tgz
PYTHON_DIR=Python-3.7.9
## for sqlite
cd ${HOME_PATH}
tar zxf ${SQLITE_ARCHIVES}
mkdir -p ${SQLITE_BUILD_DIR}
cd ${SQLITE_DIR}
./configure --prefix=${LIB_INSTALL_DIR}
make
make install
## for python
cd ${HOME_PATH}
tar zxf ${PYTHON_ARCHIVES}
cd ${PYTHON_DIR}
./configure --prefix=${LIB_INSTALL_DIR}
make
make install |
コンパイルする
Dockerを用いてNumPyモジュールとOpenCVモジュールをコンパイルします。
${SDK_DIR}/external/build/sample/docker ディレクトリでDockerを実行してください。
Code Block |
---|
$ docker run --rm -it --name aarch64-ubuntu -v `pwd`/docker_volume:/home/docker compile/ubuntu-rel:0.1 |
${SDK_DIR}/external/build/sample/docker/docker_volume/install_pathにコンパイル済みモジュールが作成されます。
Info |
---|
OpenCVのコンパイルには時間がかかるため、しばらく待ちます。 |
AdamAppに配置する
作成されたモジュールを、AdamAppで使用できるように配置します。
チュートリアルではsrc/adamapp-py/sqlite_appを例とします。