在 32 位机器上使用 .so 时出错:"wrong ELF class: ELFCLASS64"

Error when using .so: "wrong ELF class: ELFCLASS64" on 32-bit machine

在 64 位机器上使用 Python 2.7.15 Ubuntu 18.04.2 按照指令构建 https://github.com/Azure/azure-iot-sdk-python/blob/master/doc/python-devbox-setup.md#build-the-azure-iot-hub-sdks-for-python-on-linux,当在 32 位 Yocto 机器上 运行 结果 .so 运行 Python 2.7.12.

时,我们得到这个错误

据此 post:gcc error: wrong ELF class: ELFCLASS64,我想可以使用 GCC 标志完成构建。然而,在 运行 ./build.sh 时简单地使用“-m32”是行不通的。

我想我也可以 use/change 某种配置参数。但是,我在 SDK 中找不到任何明显的更改。

更具体地说,错误是: 'ImportError: /home/root/build_folder/iothub_client.so: wrong ELF class: ELFCLASS64'

在我看来,您应该为目标机器交叉编译 Python SDK。根据 gcc 文档,-m32 标志用于 Nvidia PTX 选项。我怀疑你不想要那个。您需要为目标设备的体系结构找到合适的工具链,并使用它来构建 Python 二进制文件。这里有可以帮助您解决此问题的文档:https://github.com/Azure/azure-iot-sdk-python/blob/master/doc/Example%20of%20Cross%20Compiling%20the%20Azure%20IoT%20SDK%20for%20Python.md

您没有提到您的 Yocto 设备的架构是什么。