我正在尝试为Yocto(i.MX6D)交叉编译OpenCV 3.2。
我创建了一个toolchain.cmake
文件:
# compiler
include(CMakeForceCompiler)
cmake_force_c_compiler(arm-poky-linux-gnueabi-gcc GNU)
cmake_force_cxx_compiler(arm-poky-linux-gnueabi-g++ GNU)
# sysroot location
set(MYSYSROOT /opt/poky/1.8/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi)
# compiler/linker flags
add_definitions("--sysroot=${MYSYSROOT}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --sysroot=${MYSYSROOT}" CACHE INTERNAL "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --sysroot=${MYSYSROOT}" CACHE INTERNAL "" FORCE)
# cmake built-in settings to use find_xxx() functions
set(CMAKE_FIND_ROOT_PATH ${MYSYSROOT})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
我跑:de@DE:~/OpenCVcross/opencv/build$ cmake -DCMAKE_TOOLCHAIN_FILE=poky-opencv-toolchain.cmake -DOPENCV_EXTRA_MODULES_PATH=/home/de/OpenCVcross/opencv_contrib/modules /home/de/OpenCVcross/opencv
并收到此错误:
在互联网上有很多例子来创建一个bitbake
包含Opencv 2.4的图像。我不想创建一个新的图像,只想用poky编译OpenCV 3.2。
P.S。我尝试使用poky编译一个简单的hello.c并且它成功了。
arm-poky-linux-gnueabi-gcc --sysroot=/opt/poky/1.8/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi -mfloat-abi=hard hello.c -o helloworld
如何用poky编译OpenCv 3.2?这有什么问题?
答案 0 :(得分:0)
我认为您不需要自己的工具链文件。 Yocto SDK在/opt/poky/1.8/sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchianConfig.cmake中提供了一个。如果您没有指定-DCMAKE_TOOLCHAIN_FILE
,则会使用此版本。