ZED SDKをqmakeでクロスコンパイルする方法(Jetson TX1向け)
ZED SDKのインストール
Jetson向けZED SDKをダウンロードして、Jetsonにインストールする。
https://www.stereolabs.com/developers/release/
jetson$ chmod +x ZED_SDK_JTX1_v*.run
jetson$ ./ZED_SDK_JTX1_v*.run
ビルド方法を確認
サンプルプログラムのビルド方法はこちらに書かれている。
CMakeでビルドをしており、以下のファイルでパス等を確認できる。
jetson$ vi /usr/local/zed/zed-config.cmake
# ===================================================================================
# The ZED CMake configuration file
#
# Usage from an external project:
# In your CMakeLists.txt, add these lines:
#
# SET(ZED_DIR "/usr/local/zed/")
# FIND_PACKAGE(zed REQUIRED )
# INCLUDE_DIRECTORIES(${ZED_INCLUDE_DIRS})
# link_directories(${ZED_LIBRARY_DIR})
# TARGET_LINK_LIBRARIES(MY_TARGET_NAME ${ZED_LIBRARIES})
#
# This file will define the following variables:
# - ZED_LIBRARIES : The list of dynamic libraries (ZED SDK) to links against.
# - ZED_STATIC_LIBRARIES : The list of static libraries (ZED SDK) to links against.
# - ZED_STATIC_DEP_LIBRARIES: The list of static libraries (ZED SDK dependencies) to links against.
# - ZED_LIBRARY_DIR : The directory where lib files are.
# - ZED_INCLUDE_DIRS : The ZED include directories.
# - ZED_CUDA_VERSION : The CUDA version required by the ZED SDK.
# - CUDA_NPP_LIBRARIES_ZED : The CUDA NPP libraries used by the ZED SDK.
# ===================================================================================
set(ZED_FOUND FALSE CACHE BOOL "" FORCE)
set(ZED_INCLUDE_DIRS "/usr/local/zed/include") ★ ZED SDKのインクルードパス
set(ZED_LIBRARY_DIR "/usr/local/zed/lib") ★ ZED SDKのライブラリパス
if(ZED_INCLUDE_DIRS)
set(ZED_LIBRARIES
"/usr/local/zed/lib/libsl_input.so" ★ ZED SDKの共有ライブラリ
"/usr/local/zed/lib/libsl_core.so"
"/usr/local/zed/lib/libsl_zed.so"
)
set(ZED_STATIC_LIBRARIES
"/usr/local/zed/lib/libsl_zed_static.a" ★ ZED SDKの静的ライブラリ
"/usr/local/zed/lib/libsl_input_static.a"
"/usr/local/zed/lib/libsl_core_static.a"
)
set(ZED_FOUND TRUE CACHE BOOL "" FORCE)
exec_program(uname ARGS -p OUTPUT_VARIABLE CMAKE_SYSTEM_NAME2)
if (CMAKE_SYSTEM_NAME2 MATCHES "aarch64" )
unset(CUDA_USE_STATIC_CUDA_RUNTIME CACHE)
option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
endif()
SET(ZED_CUDA_VERSION 9.0)
find_package(CUDA 9.0 EXACT REQUIRED)
if(CUDA_FOUND)
set(cuda_path "/usr/local/cuda-${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}/lib64/") ★ CUDAのライブラリパス
set(CUDA_NPP_LIBRARIES_ZED
"${cuda_path}libnppial.so" ★ CUDAの共有ライブラリ
"${cuda_path}libnppisu.so"
"${cuda_path}libnppicc.so"
"${cuda_path}libnppicom.so"
"${cuda_path}libnppidei.so"
"${cuda_path}libnppif.so"
"${cuda_path}libnppig.so"
ホスト環境にファイルを転送する
ZED SDK
JetsonにインストールしたZED SDKのファイルを、クロスビルド環境のホストPCに転送する。
ZED SDKのライブラリやインクルードファイル等は/usr/local/zed/
フォルダにインストールされている。
JetPackのrootfsフォルダで操作を行う。(IPアドレスはJetsonのIPアドレス)
host$ cd ~/JetPack/64_TX1/Linux_for_Tegra/rootfs/usr/local
host$ sudo rsync -e ssh -avz [email protected]:/usr/local/zed .
ZED SDKインストール時にユーザー所有権でインストールしていたので、rootに変更しておく。
パーミッションも合わせて変更しておく。
host$ sudo chown -R root zed
host$ sudo chmod -R 755 zed
CUDA
同様に転送する。
host$ cd ~/JetPack/64_TX1/Linux_for_Tegra/rootfs/usr/local
host$ sudo rsync -e ssh -avz [email protected]:/usr/local/cuda .
host$ sudo rsync -e ssh -avz [email protected]:/usr/local/cuda-9.0 .
aarch64-linux-gnu
同様に転送する。
host$ cd ~/JetPack/64_TX1/Linux_for_Tegra/rootfs/usr/lib
host$ sudo rsync -e ssh -avz [email protected]:/usr/lib/aarch64-linux-gnu .
シンボリックリンクの修正
以下のスクリプトを利用し、ホスト側にコピーしたシンボリックリンクをホスト向けに修正する。
https://github.com/alpqr/fixsymlinks_tx1
host$ chmod +x fixsymlinks.sh
host$ sudo ./fixsymlinks.sh ~/JetPack/64_TX1/Linux_for_Tegra/rootfs
クロスビルドで Hello ZED する
sysroot設定
Qt Creatorを起動する。
オプションでSysrootにJetPackのrootfsを指定しておくこと。
プロジェクトファイル設定
INCLUDEPATH
とLIBS
にZEDとCUDAのパスを通す。
INCLUDEPATH += /home/ubuntu/JetPack/64_TX1/Linux_for_Tegra/rootfs/usr/local/zed/include \
/home/ubuntu/JetPack/64_TX1/Linux_for_Tegra/rootfs/usr/local/cuda/include
LIBS += -L/home/ubuntu/JetPack/64_TX1/Linux_for_Tegra/rootfs/usr/local/zed/lib \
-lsl_input \
-lsl_core \
-lsl_zed \
-L/home/ubuntu/JetPack/64_TX1/Linux_for_Tegra/rootfs/usr/local/cuda/lib64 \
-lnppial \
-lnppisu \
-lnppicc \
-lnppicom \
-lnppidei \
-lnppif \
-lnppig \
-lnppim \
-lnppist \
-lnppitc \
-lnpps \
-lnppc
これでサンプルプログラムがqmakeでビルドできるようになる。
参考までに、QtでZED tutorial 1をビルドしたソースコードをGitHubに置いた。
Author And Source
この問題について(ZED SDKをqmakeでクロスコンパイルする方法(Jetson TX1向け)), 我々は、より多くの情報をここで見つけました https://qiita.com/otomon10/items/df8f0b263c8eb72b5380著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .