• 12463阅读
  • 10回复

qt移植到mips环境下遇到的问题 [复制链接]

上一主题 下一主题
离线housetail
 
只看楼主 倒序阅读 楼主  发表于: 2009-04-21
— 本帖被 XChinux 执行加亮操作(2010-09-08) —
我想把QT4.4.3移植到mips系统下,编译没有错误
但是运行qt程序显示出蓝屏,看不到GUI界面.

编译过程
1
#./configure -prefix /usr/local/Trolltech/QtEmbedded-4.4.3-mips1 -fast -no-largefile -nomake examples -nomake demos -webkit -silent -platform qws/linux-x86-g++ -xplatform qws/linux-mips-g++ -embedded mips -little-endian -depths all -qt-gfx-linuxfb -qt-kbd-tty -qt-mouse-pc 2>../configure.error

生成的报告的部分摘录
result:
Graphics (qt) ....... linuxfb multiscreen linuxfb
Graphics (plugin) ...
Decorations (qt) .... styled windows default
Decorations (plugin)  
Keyboard driver (qt). tty tty
Keyboard driver (plugin)
Mouse driver (qt) ... pc linuxtp pc
Mouse driver (plugin)
OpenGL support ...... no
2.
#gmake 2>gmake.error
#gmake install

gmake产生了一些警告,可以参看附件.

设置如下
mips系统(目标)                 172.16.1.228
x86系统(安装QT的系统)   172.16.1.225

然后在mips的系统上设置如下
#mount -t nfs -o nolock 172.16.1.225:/       /mnt/

设置环境变量
#uclibc[Trolltech]# sourceqte-mips-stb.sh
#uclibc[Trolltech]# cat qte-mips-stb.sh
#!/bin/sh
QT=/mnt/usr/local/Trolltech
ln -s $QT /usr/local/Trolltech
QTE=/mnt/usr/Trolltech/QtEmbedded-4.4.3-mips1
export LD_LIBRARY_PATH=$QTE/lib
export PATH=$QTE/bin:$PATH
#我不知道是不是QWS_DISPLAY变量的原因,但是在x86下编译的qte运行时并没有设置这个变量,也能正常运行.
#export QWS_DISPLAY="LinuxFb:0"

在x86的机器上设置好samba和nfs
设置环境变量
# source QtEmbedded-4.4.3-mips1.sh

# cat QtEmbedded-4.4.3-mips1.sh
#!/bin/bash
#/usr/local/Trolltech/QtEmbedded-4.4.3-mips1
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.4.3-mips1
export QTINC=$QTDIR/include
export QTLIB=/$QTDIR/lib

export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

测试程序如下
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{

    QApplication app(argc, argv);
    QPushButton hello("Hello world!");
    hello.show();
    return app.exec();
}

开发工具链是别人编译好的,我就不贴了.

测试结果如下,没有GUI页面的话,QT是能正常跑的,比如执行一个QT的定时器.
存在GUI界面的话,屏幕先显示一个鼠标,然后显示出蓝屏,但是看不到GUI界面.

uclibc[t1]# ./t1 -qws &
809
uclibc[t1]# mambolfb_mmap: OSD videomemory asked:0x1786ac00
mambolfb_mmap remapped 1658880 bytes in userland of process 809 at address vma_start0x2bbc6000 to phys=0x1786ac00

proc目录下面的maps文件可以见附录

mips系统的framebuffer设备是没有问题的,我执行了QT的fb测试程序确认过.





附件: gmake.zip (6 K) 下载次数:9
附件: t1.zip (1 K) 下载次数:4
离线housetail
只看该作者 1楼 发表于: 2009-04-21
有人在mips下成功移植过么?
能不能分享一些经验.
离线zbp2008
只看该作者 2楼 发表于: 2009-06-01
请问你用的mips芯片是哪款?
我用的是采用龙芯CPU技术的广州海山公司的3210i芯片。目前也在移植qte-4.4.3,编译通过,大部分qt4自带的例子能在dev3210开发板上运行,但是还是有一些较复杂的例子运行不起来,报段错误。
我用的编译器是mipsel-linux-g++  (3.4.6)。刚才把你上面说的那个hello world例子编译了一下,在我的dev3210mips开发板上运行没问题。
离线kjpioo

只看该作者 3楼 发表于: 2009-06-02
是因为你的开发板上的qt库不包含一些控件类。如果一个程序里用到这个控件,就不能正常运行
linux qt
离线lisuzhen929
只看该作者 4楼 发表于: 2010-09-08
我现在也是碰到了这个问题,更严重的是还不知道framebuffer有没有问题呢,我用的是mipseltools-gcc412-glibc261,程序在里面运行看起来好像没有问题,可是串口却会出现
# ./hello -qws
Creating mouse: Auto
àààààà
然后就不能再操作了,请问是怎么回事呀
离线flc45
只看该作者 5楼 发表于: 2011-11-15
也是碰到了这个问题
离线jwqacqy
只看该作者 6楼 发表于: 2012-09-08
我曾经移植过sumsung s3c2440  freescale imx6 imx53 imx51  TI omap系列 君正jz4740 龙芯mips  x86平台工控机。邮_箱名:touchqvfb    域163.com 具体沟通。这些平台都有自己的编译器,以便能编译出可以在它的平台下运行的代码。这种编译器差异给QT或其他开源库移植带来很多麻烦,只要掌握了原理,这些都不是问题。
离线stlcours

只看该作者 7楼 发表于: 2017-05-02
没有MIPS开发板,能在虚拟机下编译运行MIPS程序吗??
离线大漠之鹰

只看该作者 8楼 发表于: 2017-05-02
回 stlcours 的帖子
stlcours:没有MIPS开发板,能在虚拟机下编译运行MIPS程序吗?? (2017-05-02 00:02) 

可以在qemu下面执行mips的应用
本是后山人,偶作前堂客,醉舞经阁半卷书,坐井说天阔。大志戏功名,海斗量福祸,论到囊中羞涩时,怒指乾坤错
QQ:874164244
离线stlcours

只看该作者 9楼 发表于: 2017-05-02
回 大漠之鹰 的帖子
大漠之鹰:可以在qemu下面执行mips的应用 (2017-05-02 14:07) 

做QEMU下编译和运行QT的程序都可以?那就太好啦,我要做一个龙芯版的程序~~
离线大漠之鹰

只看该作者 10楼 发表于: 2017-05-03
回 stlcours 的帖子
stlcours:做QEMU下编译和运行QT的程序都可以?那就太好啦,我要做一个龙芯版的程序~~ (2017-05-02 14:37) 

龙芯平台下的Qt比较完善,其它平台可以运行的Qt程序在龙芯上都可以运行。目前只有webkit组件有些问题。刚刚移植了qtmoko,用的Qt4.8.7
本是后山人,偶作前堂客,醉舞经阁半卷书,坐井说天阔。大志戏功名,海斗量福祸,论到囊中羞涩时,怒指乾坤错
QQ:874164244
快速回复
限100 字节
 
上一个 下一个