207 похожих чатов

Привет, кто-нибудь настраивал кросс-компиляцию на nvidia-jetson? Я хочу скомпилить свой плагин

на 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)

2 ответов

21 просмотр

Как минимум, вы не должны задавать CMAKE_TOOLCHAIN_FILE изнутри, это нужно делать снаружи при вызове cmake для конфигурации: cmake -S source/dir/ -B build/dir/ -DCMAKE_TOOLCHAIN_FILE=/opt/devkit_toolchain.cmake # other options ...

Ofee Oficsu
Как минимум, вы не должны задавать CMAKE_TOOLCHAIN...

Иногда его вообще лучше задавать как env. По крайней мере, если есть external-project, они так его тоже увидят и используют. А в виде параметра cmake он до них не дойдёт.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта