CMake未能确定目标平台的位数

时间:2017-08-01 12:41:44

标签: c++ opencv gcc cross-compiling yocto

我正在尝试为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

并收到此错误:

enter image description here

在互联网上有很多例子来创建一个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?这有什么问题?

1 个答案:

答案 0 :(得分:0)

我认为您不需要自己的工具链文件。 Yocto SDK在/opt/poky/1.8/sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchianConfig.cmake中提供了一个。如果您没有指定-DCMAKE_TOOLCHAIN_FILE,则会使用此版本。