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

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签