OpenCV for ARM 的交叉编译失败

Cross Compilation of OpenCV for ARM fails

我正在关注 this site 为 ARM 编译 OpenCV。

它找不到我的编译器,所以我将它硬编码到 cmake 文件中

find_program(CMAKE_C_COMPILER NAMES arm-linux-gnueabi-gcc-4.7) find_program(CMAKE_CXX_COMPILER NAMES arm-linux-gnueabi-g++-4.7) set(ARM_LINUX_SYSROOT /usr/arm-linux-gnueabi CACHE PATH "ARM cross compilation system root")

它编译到大约 50%,然后抛出以下错误:

Linking CXX shared library ../../lib/libopencv_viz.so /usr/lib/libvtkCharts.so.5.8.0: file not recognized: File format not recognized collect2: error: ld returned 1 exit status

我并不是每个人都有交叉编译(或直接编译)的经验。我该如何解决这个问题?

我认为这是 libopencv_vizlibvtkCharts 之间的不匹配。您的一些 3rdparty 库是为另一个平台构建的。这些库本身必须从源代码重新编译以匹配它们打算在其上使用的系统的详细信息(ABI、动态系统库依赖项等)。

编译 OpenCV 2.4.10 对我有用。我没有任何首选版本。如果您想编译 v3.0,请参阅@Kornel 的回答,建议将 viz 库排除在编译之外。

使用此命令检查 v2.4.10

git checkout 2.4.10