Qt 5.12.5交叉编译树莓派3时调用libusb函数出现链接错误
解决树莓派交叉编译Qt项目链接libusb的错误
错误原因分析
从链接错误信息来看,分为两类核心问题:
- udev依赖缺失:Linux平台下libusb依赖udev实现设备热插拔、枚举功能,交叉编译时仅链接
libusb-1.0但未关联依赖的udev库,导致udev_device_get_action等符号未定义。 - 动态链接库缺失:
_dl_stack_flags、_dl_pagesize等符号来自libdl库,交叉编译时需显式链接该库以支持glibc的动态链接功能。
解决方案
修改Qt项目的.pro文件,补充缺失的链接库:
LIBS += -lusb-1.0 -ludev -ldl
注意库的顺序:依赖库需放在被依赖库之后——
libusb-1.0依赖udev,因此-ludev要在-lusb-1.0之后;libdl提供动态链接支持,需最后添加。
验证步骤
- 清理原有编译产物:
make clean
- 重新执行交叉编译流程:
/home/vboxuser/raspi/qt5/bin/qmake /home/vboxuser/myproj/11-USBproject/usbCashboxExchange/usbCashboxExchange.pro -spec /home/vboxuser/raspi/qtbase/mkspecs/devices/linux-rasp-pi3-g++/ CONFIG+=debug CONFIG+=qml_debug && make
内容的提问来源于stack exchange,提问作者Artem Redko
相关产品推荐
相关产品推荐

