Qt在blackfin平台的移植(备忘)_qlinuxfbscreen:: connect: 无效的参数 error: failed to m-程序员宅基地

技术标签: QT/ucGUI  

Qt在blackfin平台的移植(备忘)


 

 

前提:已经存在一个可以运行ulinux系统(内核需要支持unix socket选项)且支持frambuffer的Blackfin平台环境,并且有了blackfin平台编译工具链。

 

1.下载QtEmbedde(Qt/E)版本源码,下载地址为:ftp://ftp.trolltech.no/qt/source/qt-embedded-linux-opensource-src-4.5.1.tar.gz;

 

2.下载Qt/E支持blackfin的补丁,从http://blackfin.uclinux.org/gf/ 下载blackfin-linux-dist-2010R1-RC5.tar.bz2的uClinux版本,因为该版本支持QT,解压后在解压目录下lib/qt-embedded/patches下有相关的补丁(如果有的话也可从其它地方下);

 

3.解压qt-embedded-linux-opensource-src-4.5.1.tar.gz,在解压后的目录下利用patch命令打上所有的补丁:

patch -p1 -E < (补丁文件)

 

注意:由于补丁版本的BUG打完补丁后还需要修改触压目录下src/gui/embedded/qscreenlinuxfb_qws.cpp文件,找到412行把MAP_SHARED改为MAP_PRIVATE,否则将无法正常显示,修改如下:

 

改前:

data =(unsigned char *)-1;

 if (d_ptr->fd != -1)

        data = (unsigned char *)mmap(0,mapsize, PROT_READ | PROT_WRITE,

                                MAP_SHARED, d_ptr->fd, 0);

 

改后:

data =(unsigned char *)-1;

 if (d_ptr->fd != -1)

        data = (unsigned char *)mmap(0,mapsize, PROT_READ | PROT_WRITE,

                                MAP_PRIVATE, d_ptr->fd, 0);

      

       如果要支持自己的触摸屏需自更改相关鼠标驱动文件代码,文件所在目录为:src/gui/embedded,最后采用修改qmouselinuxtp_qws.cppqmouselinuxtp_qws.h文件,添加自己的触摸屏信息解码相关代码(详细的修改可以参考网上),最后需在配置选项增加-qt-mouse-linuxtplinuxtp驱动的支持.

 

4.打完补丁和修改代码后,可以进行Qt的配置,可以通过./configure –help查看相关的配置帮助,配置选项的意思可以在配置帮助查看,最后采用如下配置:

 

./configure-prefix /usr/local/qtembedded -embedded bfin -xplatformqws/linux-bfin-fdpic-g++ -shared -confirm-license -opensource -verbose-little-endian -no-qt3support -depths 8,16,24,32 -no-webkit -nomaketranslations -no-cups -no-nis -no-dbus -qt-gfx-linuxfb -no-iconv -no-glib-no-rpath -no-feature-QWS_CURSOR -qt-mouse-linuxtp

 

注:-no-feature-QWS_CURSOR表示不出现鼠标指针.

 

5.配置成功后就可以进行make;

 

6.make成功后生成相关动态库和实例,即基本完成移植;

 

7.把实例放到平台上运行,先要配置环境变量:

export QWS_MOUSE_PROTO=LinuxTP:(触摸屏设备节点)

再把相关的动态库复制到blackfin平台的/usr/lib目录下,同时也要把font下的*qpf文件复制到指定的目录,复制到什么目录可以运行下实例,出错时会提示出目录;

再运行:

./实例 –qws &

       加&表示后台运行,如果没出错表示运行成功;


 

运行出错分析提示:

(1)直接./实例  运行出现如下错误:

QWSSocket::connectToLocalFilecould not connect:: Bad file descriptor

QWSSocket::connectToLocalFilecould not connect:: Bad file descriptor

QWSSocket::connectToLocalFilecould not connect:: Bad file descriptor

No Qt forEmbedded Linux server appears to be running.

If youwant to run this program as a server,

add the"-qws" command-line option.

 

需加-qws运行即./实例 –qws 如果还出现socket类的错误可能是内核没有增加Unix socket的支持;

 

(2)出现如下错误:

QLinuxFbScreen::connect:No such device

Error:failed to map framebuffer device to memory.

 

表示没把src/gui/embedded/qscreenlinuxfb_qws.cpp文件进行修改,

 

(3)出现如下错误码:

QFontDatabase: Cannot find font directory /usr/local/qte-arm/lib/fonts - is Qt ?

Aborted

(注:/usr/local/qte-arm/lib/fonts这个具体路径视你安装qte的路径而定)

需要把编译后在lib下的fonts复制到对应提示的目录。

 

(4)出现如下错误:

lockingqpf: Permission denied

 

在复制font下的文件时只复制*.qpf文件即可,可能会支持不了中文显示。

 

 

8.最后可以在$PATH中增加qt编译后的bin目录,主要是用到qmake,这样就有了QT/blackfin平台的交叉编译环境,可以编译自己的QT代码!

 

      9.完成。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/vigour1000/article/details/22982619

智能推荐

web结课作业的源码 WEB静态网页作业模板 大学生个人主页博客网页代码 dw个人网页作业成品简单页面-程序员宅基地

文章浏览阅读330次,点赞8次,收藏10次。HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐 【作者主页——获取更多优质源码】 【学习资料/简历模板/面试资料/ 网站设计与制作】 【web前端期末大作业——毕设项目精品实战案例】---@[TOC](文章目录)一、网页介绍1 网页简介:此作品为学生个人主

ICML2019|深度学习鼻祖之一Bengio提出并开源图马尔科夫神经网络-程序员宅基地

文章浏览阅读724次。Meng Qu,Yoshua Bengio,Jian TangMontreal Institute for Learning Algorithms (MILA), Uni..._马尔可夫 图神经网络

【Scikit-Learn】初试开源机器学习工具_# author: gael varoquaux <gael.varoquaux@normalesu-程序员宅基地

文章浏览阅读904次。啊好久没用Markdown以外的编辑器了,这次随性一点就用xhEditor吧~嘛,写的确实也挺随(luan)性(xie)的23333$ pip install -U scikit-learn$ wget http://scikit-learn.org/stable/_downloads/plot_spectral_biclustering.py$ wget http://sciki_# author: gael varoquaux

VMware vSphere 6 序列号大全-程序员宅基地

文章浏览阅读1.7w次,点赞4次,收藏11次。转载自 http://www.i5i6.net/post/190.htmlvSphere 6 HypervisorHY0XH-D508H-081U8-JA2GH-CCUM24C4WK-8KH8L-H85J0-UHCNK-8CKQ8NV09R-2W007-08D38-CA956-33U28JU400-6EK4L-080V9-QT8EP-2KAQ2vSphere 6 Hypervisor for E..._esxi 6.0 序列号

nodejs解析http协议源码解析_js http 源码-程序员宅基地

文章浏览阅读1.2k次。上篇文章讲到nodejs创建一个服务并且建立tcp连接的过程。接下来分析一下,在建立tcp连接后,nodejs是如何解析http协议的。我们首先看一下nodejs在建立tcp连接时执行net.js层的回调时做了什么操作。下面是核心代码。// clientHandle代表一个和客户端建立tcp连接的实体function onconnection(err, clientHandle) { va..._js http 源码

编写一段网页文字放大动画-程序员宅基地

文章浏览阅读70次。如果要在网页上实现文字放大动画,可以使用 CSS 动画或 JavaScript 动画。使用 CSS 动画,可以通过设置 transition 属性来实现动画效果,例如:.text { transition: transform 0.5s; /* 设置动画时间为 0.5 秒 */}.text:hover { transform: scale(1.2); /* 鼠标悬浮时文字放大..._css 动画设置字体变大动画

随便推点

Echarts基础-安装语法高亮插件&less-rem转换动态适配大小_echarts无法rem转换-程序员宅基地

文章浏览阅读1k次,点赞33次,收藏13次。Echarts是一个功能强大的JavaScript开源可视化库,专门用于创建各种图表和数据可视化。丰富的图表类型:Echarts提供了包括折线图、柱状图、散点图、饼图、雷达图、地图等多种常见的图表类型,满足不同的数据展示需求。兼容性良好:它可以流畅运行在PC和移动设备上,并且兼容多种浏览器,如IE8/9/10/11,Chrome,Firefox,Safari等。底层依赖ZRender:Echarts底层依赖于矢量图形库ZRender,这使得其能够提供直观且交互性强的数据可视化效果。_echarts无法rem转换

Spring框架以及源码学习_spring框架源码-程序员宅基地

文章浏览阅读769次。一、Spring注解驱动开发1.容器—组件注册-@Configuration&@Bean给容器中注册组件—组件注册-@ComponentScan-自动扫描组件&指定扫描规则—组件注册-自定义TypeFilter指定过滤规则—组件注册-@Scope-设置组件作用域—组件注册-@Lazy-bean懒加载—组件注册-@Conditional-按照条件注册bean...................._spring框架源码

Vue播放器之vue-video-player及其问题_vue mp4编码-程序员宅基地

文章浏览阅读3k次。Vue播放器之vue-video-player及其问题一、使用vue-video-player1.安装 npm install vue-video-player --save2.main.js引入vue-video-playerimport VideoPlayer from 'vue-video-player'require('video.js/dist/video-js.css')require('vue-video-player/src/custom-theme.css')Vue.u_vue mp4编码

Qt 杂项(Qwt、样式等)_qwt 样式-程序员宅基地

文章浏览阅读608次。QwtDial 的指针是由QwtDialNeedle类绘制的,自定指针也就是实现QwtDialNeedle的子类继承QwtDialNeedle只需要实现drawNeedle函数i < 4;i++ )滑块是通过drawHandle函数绘制;可以通过一个函数指针,将外部绘制滑块的逻辑引入,替换默认绘制逻辑函数指针定义(qwt_slider.h):主要参数:handleRect,绘制滑块的区域,根据handleRect的坐标范围进行自定义绘制。_qwt 样式

repeater内绑定事件_repeater 绑定事件-程序员宅基地

文章浏览阅读806次。1,只要有回发,就要把GetList放在 Page_Load(){if (!IsPostBack){}}中, 2, ' > ' /> protected void Page_Load(object sender, EventArgs e)_repeater 绑定事件

基于逻辑回归和支持向量机的前馈网络进行乳腺癌组织病理学图像分类-程序员宅基地

文章浏览阅读1.1k次,点赞21次,收藏17次。CNN(卷积神经网络)通过使用反向传播方法来学习特征,这种方法需要大量的训练数据,并且存在梯度消失问题,从而恶化了特征学习。

推荐文章

热门文章

相关标签