使用 Yocto Project 在 x86-64 主机上为 nvidia tk1 (arm) 目标交叉编译带有 CUDA 的 OpenCV?
Cross compile OpenCV with CUDA on x86-64 host for nvidia tk1 (arm) target using Yocto Project?
我想使用 Yocto 项目为使用 nvidia tegra k1 处理器的系统构建自定义 Linux,该处理器具有 arm cortex A 15(32 位)和 GPU。此外,需要安装支持 CUDA 的 OpenCV(版本 >= 3.0)。
现在,当 Bitbake 尝试使用 CUDA 编译 OpenCV 时,它会崩溃,因为 nvcc 抛出错误 Syntax error: word unexpected (expecting ")")
如果您尝试 运行 一个 nvcc 二进制文件,通常会出现这种情况 I learned对于错误的系统(例如 64 位系统上的 32 位 nvcc)。所以我猜它只是 运行 支持目标系统的 nvcc,因此崩溃了。
- 我不知道是否需要使用主机系统的常用 x86-64bit-nvcc 或(如果存在)一些交叉编译-nvcc 进行编译。
- 我需要知道如何将所述编译器纳入 bitbake 构建 OpenCV 的过程。
我想通了:
- 需要使用支持主机架构的 nvcc 二进制文件。要指定目标体系结构,可以将其传递给交叉编译标志(请参阅 http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#cross-compilation)。这些是通过 cmake 标志
-DCUDA_NVCC_FLAGS
传递的
EXTRA_OECMAKE_append = "-DCUDA_NVCC_EXECUTABLE=${PATH_TO_THE_NVCC_BINARY}"
bbappend 文件中的整个语句可能如下所示
EXTRA_OECMAKE_append = " \
-DCUDA_NVCC_EXECUTABLE=${NVCC_BINARY} \
-DCUDA_NVCC_FLAGS="--compiler-bindir ${GCC_BINARY}" \
"
我想使用 Yocto 项目为使用 nvidia tegra k1 处理器的系统构建自定义 Linux,该处理器具有 arm cortex A 15(32 位)和 GPU。此外,需要安装支持 CUDA 的 OpenCV(版本 >= 3.0)。
现在,当 Bitbake 尝试使用 CUDA 编译 OpenCV 时,它会崩溃,因为 nvcc 抛出错误 Syntax error: word unexpected (expecting ")")
如果您尝试 运行 一个 nvcc 二进制文件,通常会出现这种情况 I learned对于错误的系统(例如 64 位系统上的 32 位 nvcc)。所以我猜它只是 运行 支持目标系统的 nvcc,因此崩溃了。
- 我不知道是否需要使用主机系统的常用 x86-64bit-nvcc 或(如果存在)一些交叉编译-nvcc 进行编译。
- 我需要知道如何将所述编译器纳入 bitbake 构建 OpenCV 的过程。
我想通了:
- 需要使用支持主机架构的 nvcc 二进制文件。要指定目标体系结构,可以将其传递给交叉编译标志(请参阅 http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#cross-compilation)。这些是通过 cmake 标志
-DCUDA_NVCC_FLAGS
传递的
EXTRA_OECMAKE_append = "-DCUDA_NVCC_EXECUTABLE=${PATH_TO_THE_NVCC_BINARY}"
bbappend 文件中的整个语句可能如下所示
EXTRA_OECMAKE_append = " \
-DCUDA_NVCC_EXECUTABLE=${NVCC_BINARY} \
-DCUDA_NVCC_FLAGS="--compiler-bindir ${GCC_BINARY}" \
"