使用Yocto Project在x86-64主机上使用CUDA与nvidia tk1(arm)目标交叉编译OpenCV?

时间:2016-11-03 17:07:13

标签: opencv cuda embedded-linux yocto tegra

我想使用Yocto项目为使用nvidia tegra k1处理器的系统构建一个自定义Linux,该处理器具有臂皮质A 15(32位)和GPU。此外,需要安装具有CUDA支持的OpenCV(版本> = 3.0)。

现在,当Bitbake尝试使用CUDA编译OpenCV时,它会崩溃,因为nvcc会抛出错误Syntax error: word unexpected (expecting ")"),如果你试图运行一个错误系统的nvcc二进制文件,那么I learned通常就是这种情况(例如64位系统上的32位-nvcc)。所以我猜它只是运行目标系统支持的nvcc,因此会崩溃。

  1. 我不知道是否需要使用主机系统的常用x86-64bit-nvcc进行编译,或者(如果存在)某些交叉编译-nvcc。
  2. 我需要知道如何将所述编译器纳入构建OpenCV的bitbake进程中。

1 个答案:

答案 0 :(得分:1)

我明白了:

  1. 需要使用支持主机架构的nvcc二进制文件。要指定目标体系结构,可以通过它传递编译标志(参见http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#cross-compilation)。这些是通过cmake标志-DCUDA_NVCC_FLAGS
  2. 传递的
  3. EXTRA_OECMAKE_append = "-DCUDA_NVCC_EXECUTABLE=${PATH_TO_THE_NVCC_BINARY}"
  4. bbappend文件中的整个语句可能如下所示

    EXTRA_OECMAKE_append = " \
        -DCUDA_NVCC_EXECUTABLE=${NVCC_BINARY} \ 
        -DCUDA_NVCC_FLAGS="--compiler-bindir ${GCC_BINARY}"  \
        "