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

交叉编译wiringOP时出现GLIBC版本相关未定义引用错误求助

解决wiringOP交叉编译的GLIBC版本不兼容问题

问题本质

你遇到的链接错误,核心原因是wiringOP库依赖的GLIBC版本(2.28/2.29/2.34)远高于你交叉编译工具链提供的GLIBC版本,导致链接器无法找到这些高版本的系统符号。直接从开发板或预编译包获取的库,几乎都会出现这类版本不匹配问题。

解决步骤

1. 用交叉工具链重新编译wiringOP源码

这是最根本的解决方法,确保库和工具链的GLIBC版本一致:

  • 克隆仓库并切换分支:
    git clone https://github.com/orangepi-xunlong/wiringOP.git
    cd wiringOP
    git checkout next
    
  • 修改Makefile指定交叉工具链:
    打开根目录的Makefile,找到以下行并替换为你的交叉编译器(比如你用的aarch64-linux-gnu-gcc):
    CC = aarch64-linux-gnu-gcc
    AR = aarch64-linux-gnu-ar
    RANLIB = aarch64-linux-gnu-ranlib
    
  • 编译并导出到临时目录:
    make
    make DESTDIR=/tmp/wiringop_install install
    
    编译完成后,/tmp/wiringop_install/usr/local/lib会生成适配你工具链的库文件,/tmp/wiringop_install/usr/local/include是对应头文件。

2. 调整Eclipse交叉编译配置

  • 确保编译器、链接器都设置为你的交叉工具链(比如aarch64-linux-gnu-gcc),不要混用本地gcc
  • 链接参数调整:
    • LDFLAGS指向你刚编译的wiringOP库路径(比如-L/tmp/wiringop_install/usr/local/lib)
    • LDLIBS的顺序要正确,依赖库放在目标文件之后,格式如下:
      LDLIBS = -lpthread -lm -lcrypt -lrt -lwiringPi -lwiringPiDev
      
    • 删除项目中之前从其他地方拷贝的旧wiringOP库,避免版本混淆

3. 补充依赖(若需要)

如果编译wiringOP时出现头文件缺失(比如crypt.h),安装交叉工具链的配套开发库:

# 以aarch64架构为例
sudo apt install aarch64-linux-gnu-libc-dev

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:12:13