找回密码
 立即注册

关于树莓派3b交叉编译Qt5.9.1结果(嵌入式平台)

发表于 2017-7-24 20:45:25 | 显示全部楼层 |阅读模式
本帖最后由 angelus 于 2017-7-26 12:51 编辑

今天终于完美的在树莓派3上交叉编译qt5.9.1成功
从半个月前开始买了树莓派玩玩,就一直在尝试把qt5.9.1运行在树莓派3上,
先后尝试了在树莓派上编译,在32位linux下交叉编译,在64位linux下交叉编译,上网查找各种教程。
遗憾的是一直都没有完美的编译出来,要么就是缺少 播放器后端,要么就是没法开启opengl es2 ,
最好的结果就是交叉编译后需要把 工程放在特定目录下才能正常编译,还需要忽略qtwebengine模块

总之就是各种缺陷,最近突然发现国外已经有人为此开发出了编译脚本,就花费了周末两天来实验
第一天基本上各种坑,一天就在失败中结束。
不服输第二天开始尝试开发版的编译脚本,终于在经过各种问题后,编译完美成功!


选择编译的模块包括:
qtbase    qtdeclarative      
qtquickcontrols     
qtquickcontrols2   
qtmultimedia   
qtsvg                  
qtxmlpatterns     
qtwebsockets   
qtserialport     
qtwebchannel   
qtremoteobjects   
qtvirtualkeyboard   
qtwebengine   
qtnetworkauth   
qtserialbus      
qtspeech        
qtcharts     
qtgamepad   
qtgraphicaleffects
(piomxtextures ffmpeg)非qt的第三方模块


测试环境  pi3字符界面下 开启  eglfs  进行显示 (非x11图形界面)

1    qtmultimedia                                              ok     可以播放1080P的mp4影片
2:qtquickcontrols2                                         ok     自己写的例子
3:   qtremoteobjects                                         ok     自己写的例子同步
4:   qtserialport                                                 ok     自己写 语音识别模块的串口读写
5:   qtwebengine                                              ok     自带例子 quicknanobrowser 可以完美运行,访问qt的主页)


其他模块没有测试,不过应该没啥问题,我树莓派外接的是 7寸电容屏,触摸没有任何问题!
最近会更新教程到论坛.

其实网上有很多其他版本的编译,我非要选择去编译5.9.1的原因是 qtquickcontrols2和qtremoteobjects模块
其他版本要么没有,要么支持也不全










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

发表于 2017-7-25 21:41:05 | 显示全部楼层
不错啊,呵呵,可以放几张图片上来。
回复 支持 反对

使用道具 举报

发表于 2017-8-31 18:29:38 | 显示全部楼层
楼主 有用webengine读取本地视频的例子吗? 这个真的很折磨人呀
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
请教大神个问题。
我也是在把Qt5.9移值到树莓派中,在用Qt的例子player播放视频时候出现
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).

(player:11191): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed

(player:11191): GStreamer-CRITICAL **: gst_object_ref: assertion `object != NULL' failed

(player:11191): GStreamer-CRITICAL **: gst_bin_add_many: assertion `GST_IS_ELEMENT (element_1)' failed

(player:11191): GStreamer-CRITICAL **: gst_element_link_pads_full: assertion `GST_IS_ELEMENT (src)' failed

(player:11191): GStreamer-CRITICAL **: gst_element_get_static_pad: assertion `GST_IS_ELEMENT (element)' failed

(player:11191): GStreamer-CRITICAL **: gst_ghost_pad_new: assertion `GST_IS_PAD (target)' failed

(player:11191): GStreamer-CRITICAL **: gst_element_add_pad: assertion `GST_IS_PAD (pad)' failed

(player:11191): GStreamer-CRITICAL **: gst_object_unref: assertion `object != NULL' failed

(player:11191): GStreamer-CRITICAL **: gst_element_set_state: assertion `GST_IS_ELEMENT (element)' failed

(player:11191): GStreamer-CRITICAL **: gst_element_set_state: assertion `GST_IS_ELEMENT (element)' failed

(player:11191): GStreamer-CRITICAL **: gst_bin_remove: assertion `GST_IS_ELEMENT (element)' failed

(player:11191): GStreamer-CRITICAL **: gst_element_link_pads_full: assertion `GST_IS_ELEMENT (src)' failed
Linking video output element failed
请问怎么不办?谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

angelus

    主题

    帖子

    47

    积分

    Qter1级会员

    Rank: 1

    积分
    47

Qter1级会员

发私信

Qt开源社区——开源 共享 自由

微信扫一扫
查看精品教程!