我创建了一个示例Opencv C ++“。so”文件,它只显示opencv Python脚本传递的图像(即,我的python脚本将调用C ++“.so”文件并将图像传递给它)。 python和C ++之间的通信是通过Boost库完成的。
我在64位ubuntu机器上完成了所有这些。现在我需要运行我的python脚本,在32位ubuntu机器中调用“.so”,我收到以下错误。
cv2.so: wrong ELF class: ELFCLASS64
这是因为opencv“cv2.so”预计是32位?如何在ubuntu 64位机器上创建32位“cv2.so”?我还需要创建自己的“.so”文件(显示图像)为32位吗?
答案 0 :(得分:3)
你是对的。在32-bit
Ubuntu计算机上,您需要确保可执行文件及其所有依赖项都是32-bit
。这意味着您需要在.so
中重新编译32-bit
(或从第三方获取)。
要编译32位库,您需要向编译器和链接器指明这一点,很可能带有一个标志(例如-m32
时为gcc
)