Beaglebone Black部署Qt程序遇Qt交叉编译错误,求解决所需安装项
解决BeagleBone Black Debian 9上Qt程序部署错误的组件安装指南
嘿,结合你的交叉编译环境(Ubuntu 16.04 + Linaro 6.3.1工具链)和BBB的Debian 9系统,我来帮你梳理需要安装的组件和配置步骤,解决Qt程序部署的错误:
一、BBB目标系统(或挂载的根文件系统)需要安装的依赖包
你可以直接在BBB上用apt安装,或者通过工作站的chroot /mnt/bbb-rootfs操作根文件系统:
基础Qt运行时库:根据你的程序用到的Qt模块选择,核心必装的是:
apt install libqt5core5a libqt5gui5 libqt5widgets5如果用到其他模块(比如网络、多媒体、SQL等),对应安装:
- 网络:
libqt5network5 - 多媒体:
libqt5multimedia5 - SQL:
libqt5sql5 - 串口:
libqt5serialport5
- 网络:
图形与显示依赖:BBB作为嵌入式设备,需要OpenGL ES和显示相关库:
apt install libegl1-mesa libgles2-mesa libfontconfig1 libfreetype6这些库是Qt GUI程序渲染和字体显示的基础。
输入设备依赖:如果程序需要键盘、触摸屏输入,安装:
apt install libinput10 libxkbcommon0
二、交叉编译Qt库的部署(如果系统库版本不匹配)
如果交叉编译的Qt版本和Debian仓库里的Qt版本不一致,直接用系统库可能会有兼容性问题,这时候需要把你编译好的Qt库复制到BBB根文件系统:
- 找到你交叉编译Qt的安装目录(比如
/home/gunjan/qt5bbb/qt-build/lib),将所有Qt相关的.so文件复制到BBB的库目录:cp -r /home/gunjan/qt5bbb/qt-build/lib/*.so* /mnt/bbb-rootfs/usr/lib/arm-linux-gnueabihf/ - 复制Qt插件(平台插件、图像格式插件等)到BBB的Qt插件目录:
cp -r /home/gunjan/qt5bbb/qt-build/plugins/platforms /mnt/bbb-rootfs/usr/lib/arm-linux-gnueabihf/qt5/plugins/ cp -r /home/gunjan/qt5bbb/qt-build/plugins/imageformats /mnt/bbb-rootfs/usr/lib/arm-linux-gnueabihf/qt5/plugins/ - 更新BBB的库链接缓存:
chroot /mnt/bbb-rootfs ldconfig
三、BBB上的环境变量配置
确保程序能正确找到Qt库和插件,在BBB的~/.bashrc或/etc/profile中添加以下环境变量:
# 设置Qt平台插件(根据你的显示方式选择:xcb/linuxfb/eglfs) export QT_QPA_PLATFORM=xcb # 添加Qt库路径 export LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf:$LD_LIBRARY_PATH # 设置Qt插件路径 export QT_PLUGIN_PATH=/usr/lib/arm-linux-gnueabihf/qt5/plugins
如果使用eglfs平台,可能需要额外添加屏幕适配参数,比如:
export QT_QPA_EGLFS_PHYSICAL_WIDTH=80 # 屏幕宽度(单位:mm,根据你的屏幕调整) export QT_QPA_EGLFS_PHYSICAL_HEIGHT=45 # 屏幕高度
四、调试与验证
如果还是有错误,在BBB上运行ldd your_qt_program,查看输出中标记为not found的库,针对性安装或复制对应的文件即可。
内容的提问来源于stack exchange,提问作者user2061836
相关产品推荐
相关产品推荐

