на gstreamer с использованием nvivafilter.
В оф. гайде по установке все очень размыто, пришел к этому репозиторию, установил, настроил, наивный пример со сложением двух векторов работает, при сборке примера с плагином - ошибки в рантайме. Этот же проект, собранный на самом джетсоне работает без нареканий.
Вот мой CMakeLists.txt
cmake_minimum_required (VERSION 3.16)
set(CMAKE_TOOLCHAIN_FILE /opt/devkit_toolchain.cmake)
set(CMAKE_VERBOSE_MAKEFILE ON)
project(nvsample_cudaprocess VERSION 0.1 LANGUAGES CXX CUDA)
find_package(PkgConfig REQUIRED)
pkg_check_modules(PKG REQUIRED IMPORTED_TARGET egl glesv2 cudart-10.2 cuda-10.2)
add_library(${PROJECT_NAME} SHARED
nvsample_cudaprocess.cu
)
include(${CMAKE_SCRIPTS_ALL})
message(STATUS "PKG_INCLUDE_DIRS: ${PKG_INCLUDE_DIRS}")
target_include_directories(${PROJECT_NAME} PUBLIC
${PKG_INCLUDE_DIRS}
${CMAKE_SYSROOT}/usr/include
${CMAKE_SYSROOT}/usr/include/aarch64-linux-gnu/
.
)
target_link_libraries(${PROJECT_NAME}
PkgConfig::PKG
)
и тулчейн файл
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_SYSROOT /nfsroot_devkit)
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
set(ONLY_CMAKE_FIND_ROOT_PATH TRUE)
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT})
set(ENV{PKG_CONFIG_LIBDIR} "${CMAKE_SYSROOT}/usr/lib/pkgconfig:${CMAKE_SYSROOT}/usr/share/pkgconfig:${CMAKE_SYSROOT}/usr/lib/aarch64-linux-gnu/pkgconfig:${CMAKE_SYSROOT}/usr/local/lib/pkgconfig")
set(tools /opt/jetson_toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu)
set(CMAKE_C_COMPILER ${tools}/bin/aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/aarch64-linux-gnu-g++)
set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CXX_COMPILER})
set(CMAKE_CUDA_COMPILER /usr/local/cuda-10.2/bin/nvcc)
set(CMAKE_SCRIPTS_PATH /opt/CMakeScripts)
set(CMAKE_SCRIPTS_ALL ${CMAKE_SCRIPTS_PATH}/CMakeScripts.cmake)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
Как минимум, вы не должны задавать CMAKE_TOOLCHAIN_FILE изнутри, это нужно делать снаружи при вызове cmake для конфигурации: cmake -S source/dir/ -B build/dir/ -DCMAKE_TOOLCHAIN_FILE=/opt/devkit_toolchain.cmake # other options ...
Иногда его вообще лучше задавать как env. По крайней мере, если есть external-project, они так его тоже увидят и используют. А в виде параметра cmake он до них не дойдёт.
Обсуждают сегодня