You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NAO机器人加载本地C++模块报错:wrong ELF class: ELFCLASS64

问题解决:NAO机器人加载64位模块失败

核心原因

NAO机器人(尤其是旧款型号)采用32位ARM架构,你编译生成的libmymodule.so是64位(ELFCLASS64),机器人系统无法兼容加载64位库,因此触发报错。

你本地SDK里的64位库仅适用于开发主机(x86_64架构),并非针对机器人的运行库。

解决步骤

  • 使用NAO官方提供的交叉编译工具链替代本地主机gcc,这套工具链包含适配ARM 32位架构的编译器、链接器等工具。
  • 调整CMake配置:编译模块时必须指定交叉编译工具链文件,确保编译目标为ARM 32位。示例CMakeLists.txt配置:
    set(CMAKE_SYSTEM_NAME Linux)
    set(CMAKE_SYSTEM_PROCESSOR arm)
    # 指定交叉编译器路径
    set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
    set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
    
  • 重新编译生成32位的libmymodule.so,上传至机器人后再次测试。
  • 验证库架构:本地执行file libmymodule.so命令,正确输出应包含ARM和32-bit标识。

额外检查

  • 确认autoload.ini中的路径指向机器人上32位库的正确存放位置。
  • 登录机器人执行uname -m,输出应为armv7l(32位ARM架构标识)。

内容的提问来源于stack exchange,提问作者Emanuel Marquez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:22:05