【问题标题】:Cross Compilation of OpenCV for ARM failsARM 的 OpenCV 交叉编译失败
【发布时间】:2015-06-11 15:36:09
【问题描述】:

我正在关注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 交叉编译系统根目录")

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

链接 CXX 共享库 ../../lib/libopencv_viz.so /usr/lib/libvtkCharts.so.5.8.0:文件无法识别:文件格式无法识别 collect2:错误:ld 返回 1 个退出状态

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

【问题讨论】:

  • 您不需要在 CMakeLists.txt 中硬连线编译器。您可以通过 -DCMAKE_C_COMPILER=.. 将其传递给 cmake。

标签: linux opencv cmake arm


【解决方案1】:

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

【讨论】:

  • 我查看了v2.4.10,编译成功。
  • 那么你应该离开编译viz模块(如果你想编译2.4.11或3.0)。
【解决方案2】:

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

使用此命令签出 v2.4.10

git checkout 2.4.10

【讨论】:

    猜你喜欢
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多