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

使用Buildroot构建Debian时出现libDeviceIo.so文件格式无法识别错误

编译PX30平台Debian系统链接报错解决方案

问题背景

为采用RockChip PX30方案的aarch64架构Engicam PX30-Core EDIMM SOM设备编译Debian系统,编译环境为厂商提供的预装全量开发工具与配置的虚拟机。通过make menuconfig添加软件包后执行make编译,出现链接失败错误。

完整报错日志

PATH="/home/user/px30/buildroot/output/host/bin:/home/user/px30/buildroot/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" /usr/bin/make -j9 CXXFLAGS+="-DRKDEVICEIO -I/home/user/px30/buildroot/../external/deviceio_release/DeviceIO/include" LFLAGS+=" -lDeviceIo -lasound" -C /home/user/px30/buildroot/output/build/qsetting-1.0
make[1]: Entering directory '/home/user/px30/buildroot/output/build/qsetting-1.0'
/home/user/px30/buildroot/output/host/bin/aarch64-buildroot-linux-gnu-g++ -lDeviceIo -lasound -o qsetting main.o mainwindow.o qtaudio.o qtbt.o qtfactory.o qtinputdialog.o qtkeyboard.o qtupdate.o qtwifi.o qrc_res.o moc_mainwindow.o moc_qtaudio.o moc_qtbt.o moc_qtfactory.o moc_qtinputdialog.o moc_qtkeyboard.o moc_qtupdate.o moc_qtwifi.o   -lQt5Widgets -lQt5Multimedia -lQt5Gui -lQt5Network -lQt5Core -latomic -lrt -ldl /home/user/px30/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/libGLESv2.so -lpthread  -lrt -lpthread -ldl 
/home/user/px30/buildroot/output/host/lib/gcc/aarch64-buildroot-linux-gnu/6.5.0/../../../../aarch64-buildroot-linux-gnu/bin/ld:/home/user/px30/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/../lib64/libDeviceIo.so: file format not recognized; treating as linker script
/home/user/px30/buildroot/output/host/lib/gcc/aarch64-buildroot-linux-gnu/6.5.0/../../../../aarch64-buildroot-linux-gnu/bin/ld:/home/user/px30/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/../lib64/libDeviceIo.so:0: syntax error
collect2: error: ld returned 1 exit status
Makefile:214: recipe for target 'qsetting' failed
make[1]: *** [qsetting] Error 1
make[1]: Leaving directory '/home/user/px30/buildroot/output/build/qsetting-1.0'
package/pkg-generic.mk:254: recipe for target '/home/user/px30/buildroot/output/build/qsetting-1.0/.stamp_built' failed
make: *** [/home/user/px30/buildroot/output/build/qsetting-1.0/.stamp_built] Error 2

根因定位

检查链接报错指向的libDeviceIo.so文件,发现该文件并非符合aarch64架构的动态链接库,而是仅包含fake字符串的ASCII文本文件:

user@ubuntu:~/px30/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib$ cat libDeviceIo.so 
fake
user@ubuntu:~/px30/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib$ file libDeviceIo.so 
libDeviceIo.so: ASCII text

该问题是厂商提供的DeviceIO SDK编译脚本异常,导致生成了占位用的假库文件,无法被链接器识别。

解决方案

可用快速修复

若不需要使用qsetting组件,直接通过make menuconfig从目标软件包列表中移除qsetting包,重新执行编译即可解决报错。

可选修复方向(需保留qsetting时)

  • 检查external/deviceio_release目录下的SDK编译配置,修复生成假库的脚本逻辑,重新编译生成正确的aarch64架构libDeviceIo.so
  • 从厂商提供的预编译固件、配套SDK包中提取可用的aarch64版libDeviceIo.so,替换当前路径下的假文件后重新编译
  • 调整qsetting包的编译配置,将链接路径指向正确的libDeviceIo.so输出目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:45:05