У меня есть образец OpenCV C ++ «.so» файла, который будет просто отображать изображения, переданные скриптом opencv Python (т.е. мой скрипт Python будет вызывать файл C ++ «.so» и передавать ему изображение). Связь между python и C ++ осуществляется с помощью библиотеки Boost.
Я сделал все это на 64-битной машине с Ubuntu. Теперь мне нужно запустить скрипт Python, который вызывает «.so» на 32-битной машине с Ubuntu, где я получаю сообщение об ошибке ниже.
cv2.so: wrong ELF class: ELFCLASS64
Это из-за opencv «cv2.so» ожидается 32-битным? Как я могу создать 32-битный «cv2.so» в 64-битной машине Ubuntu? Также мне нужно создать свой собственный файл «.so» (который отображает изображения) как 32-битный?
Ты прав. На ваше 32-bit
Ubuntu машина, вы должны убедиться, что ваш исполняемый файл и все его зависимости 32-bit
, Это означает, что вам нужно пересобрать .so
в 32-bit
(или получить его от третьего лица).
Чтобы скомпилировать 32-битные библиотеки, вам нужно указать это вашему компилятору и компоновщику, скорее всего, с флагом (например, -m32
в случае gcc
)
Других решений пока нет …