我可以交叉编译一个简单的C ++程序。 (例如g++ -o test test.cpp & arm-linux-gnueabihf-g++ -o test test.cpp
)。
但是,当我在C ++程序中包含OpenCV头文件并交叉编译时,会引发错误。(例如arm-linux-gnueabihf-g++ -o ocv_test ocv_test.cpp $(pkg-config --libs --cflags opencv)
)。
我也可以使用默认编译器即g ++(例如g++ -o ocv_test ocv_test.cpp $(pkg-config --libs --cflags opencv)
)成功编译
我执行了cmake与
-D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm.toolchain.cmake \.
根据opencv文档。那没有帮助。
我在编译cmd中添加了opencv include dir,即-I/path/to/opencv/include
并删除了pkg-config
。那没有帮助。
我尝试通过按照某人的建议导出PKG_CONFIG_LIBDIR
来更改arm-gnueabi.toolchain.cmake。那没有帮助。
我遇到以下错误:
__/usr/lib/gcc-cross/arm-linux-gnueabihf/7/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lopencv_shape
//usr/local/lib/libopencv_stitching.so: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status__
我希望交叉编译的OpenCV应用程序在RaspberryPI上运行。
我很困惑。使用-D CMAKE_TOOLCHAIN_FILE
选项交叉编译OpenCV源代码应该可以使我们交叉编译OpenCV C ++程序。否则,我们将不得不在构建机器上单独制作或制作(交叉编译)每个OpenCV C ++程序。