【问题标题】:opencv compiled in 64 bit run in 32 bit ubuntu64位编译的opencv在32位ubuntu上运行
【发布时间】:2013-10-20 05:08:04
【问题描述】:

我创建了一个示例 Opencv C++“.so”文件,它将简单地显示由 opencv Python 脚本传递的图像(即,我的 python 脚本将调用 C++“.so”文件并将图像传递给它)。 python和C++之间的通信是通过Boost库来完成的。

我在 64 位 ubuntu 机器上完成了所有这些操作。现在我需要在 32 位 ubuntu 机器上运行调用“.so”的 python 脚本,但出现以下错误。

cv2.so: wrong ELF class: ELFCLASS64

这是因为opencv“cv2.so”预计是32位的?如何在 ubuntu 64 位机器中创建 32 位“cv2.so”?我还需要创建自己的“.so”文件(显示图像)为 32 位吗?

【问题讨论】:

    标签: c++ opencv ubuntu ubuntu-12.04 elf


    【解决方案1】:

    你是对的。在您的32-bit Ubuntu 机器上,您需要确保您的可执行文件及其所有依赖项都是32-bit。这意味着您需要在 32-bit 中重新编译您的 .so(或从第 3 方获取)。
    要编译 32 位库,您需要向编译器和链接器指明这一点,很可能带有标志(例如 -m32,如果是 gcc)

    【讨论】:

    • 我不能在我的 64 位机器上用 flag 编译 32 位版本吗?
    • 但问题出在 opencv ".so" 是否需要将其重新构建为 32 位?
    • 有没有办法通过 apt-get 获取 32 位版本的库,而不是从源代码手动构建它们?
    猜你喜欢
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2023-03-20
    • 2017-01-21
    • 2012-08-30
    • 2018-05-02
    相关资源
    最近更新 更多