包含OpenCV头文件的C ++程序的交叉编译失败

时间:2019-05-01 07:04:06

标签: c++ linux opencv cmake raspberry-pi

我可以交叉编译一个简单的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 ++程序。

0 个答案:

没有答案
相关问题