搜索
bottom↓
回复: 61

在ARM上做界面,不用QT行不行?不用Qtopia行不行?

[复制链接]

出0入0汤圆

发表于 2012-4-8 16:58:42 | 显示全部楼层 |阅读模式
本帖最后由 Chuda 于 2012-4-8 22:36 编辑

做个毕设很悲催,写写程序不是问题,遇到困难是有能力解决的。
坎坷挫折的是QT,是开发环境的搭建。
真的是越用Linux,越觉得Windows的伟大啊。
历经重重困难,得到一个结果就是把qt-everywhere的ARM版本在Ubuntu中编译了出来。
然后,qmake出可执行文件,丢到ARM上,提示缺少XXXXlib。
然后又是一番无尽的折腾。

真的好浪费时间啊。各位指引下方向吧,不用QT做界面应用,可以换什么别的技术来做界面?只要能在ARM Linux上跑。前前后后,QT的编译环境起码花了我1个月时间。




刚刚遇到问题,不知道各位能否给点意见:

我使用arm-linux-gcc 4.3.2编译好qt-everywhere-opensouce后,文件被安装在usr/local/qtXXXXXXXXX中。我将这个文件夹复制到arm的usr/local/qtXXXXXXXXX后运行qmake出来的可执行文件(因我版本较高,使用qt4.8.0,所以此时已先退出qtopia),不再提示缺少lib,而是显示“Illegal instruction”。
网上解决这方面问题的文章不多,还扯到什么浮点运算上面去。太复杂啊!

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2012-4-8 17:17:57 | 显示全部楼层
QT环境编译是比较麻烦 不防试一下MiniGUI
官网 http://www.minigui.org/

出0入0汤圆

发表于 2012-4-8 17:22:33 | 显示全部楼层
gtk无根版

出0入0汤圆

发表于 2012-4-8 19:01:11 | 显示全部楼层
QT确实相当烦啊,曾经编译过,弄了好长时间才弄好

出0入0汤圆

 楼主| 发表于 2012-4-8 19:23:13 | 显示全部楼层
真的好烦。
网上资料巨多,渐渐发现来来去去都是同一篇文章。昨晚不小心搜到一篇没看过的,才终于在Ubuntu上编译出ARM版本。
今天一天都在纠结ARM上程序无法运行的问题。

出0入0汤圆

发表于 2012-4-8 19:57:08 | 显示全部楼层
可以试试MiniGUI,国产的GUI。不过编译和安装仍然麻烦,要安装n多库和修改源代码。
QT有友善之臂移植好的文件系统可以直接用,楼主干啥还花那么多时间自己弄啊。

出0入0汤圆

发表于 2012-4-8 20:12:02 | 显示全部楼层
QT挺好啊,函数什么的都写好了,直接调用就行;

出0入0汤圆

发表于 2012-4-8 20:16:59 | 显示全部楼层
Qt挺好啊,函数都写好了,直接调用就行了,手上有几本书不过上传困难,

我以前发过一个主题,那本书不错,楼主看看

出0入0汤圆

 楼主| 发表于 2012-4-8 20:52:32 | 显示全部楼层
jade1988 发表于 2012-4-8 20:16
Qt挺好啊,函数都写好了,直接调用就行了,手上有几本书不过上传困难,

我以前发过一个主题,那本书不错, ...

谢谢帮顶。
你发的那本书我在图书馆借阅过。
可惜我现在连开发环境都搭建不起来。

出0入0汤圆

发表于 2012-4-8 21:31:10 | 显示全部楼层
我感觉QT挺好的,我现在就在用QT4

出0入0汤圆

发表于 2012-4-9 09:28:52 | 显示全部楼层
wxwidget arm

出0入0汤圆

发表于 2012-4-9 09:29:38 | 显示全部楼层
wxwidget arm (网络问题,多发了一次)

http://www.wxwidgets.org/docs/embedded.htm

出0入0汤圆

发表于 2012-4-9 09:33:25 | 显示全部楼层
毕设也用arm+linux+QT做的飘过,QT很好用的说

出0入0汤圆

发表于 2012-4-9 17:31:33 | 显示全部楼层
基础不足。QT算比较好用的了。搭建QT的开发环境其实不是很麻烦吧,就是库的编译耗时比较长一点。

出0入0汤圆

发表于 2012-4-9 17:37:15 | 显示全部楼层
很麻烦么
注意一点就好了
只是时间有点长
fedora10+Qt4.5 话说linux下Qtcreator很强大的说
LZ注意一点:
1.版本要匹配 找一篇完整的安装教程来装
2.装不好的话建议删干净了换方法来,纠结于编译错误很头疼的

出0入0汤圆

发表于 2012-4-9 19:31:03 | 显示全部楼层
本帖最后由 pilgrim_kevin 于 2012-4-9 19:34 编辑

开发环境:毫无疑问,官方的QTSDK。从qt.nokia.com下载。当前QT库是4.8版本。

交叉编译:

官方网站下载qt-erverywhere源码包。

编译脚本(示例,根据实际需要调整配置选项):

qt-everywhere-opensource-src-4.8.0:

./configure -embedded arm -release -opensource -fast -xplatform qws/linux-arm-gnueabi-g++  -little-endian -no-accessibility -no-qt3support \
            -no-multimedia -no-audio-backend -no-phonon -no-phonon-backend -no-svg -no-webkit -declarative \
            -no-mmx -no-3dnow -no-sse -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx -no-neon \
            -silent -qt-libpng -qt-libjpeg -no-libmng -no-libtiff -no-openssl \
            -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -svg \
            -qt-freetype \
            -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb \
            -qt-kbd-linuxinput \
            -qt-kbd-tty \
            -qt-mouse-linuxinput \
            -qt-mouse-tslib \
            -qt-mouse-pc \
            -no-glib \
            -confirm-license "$@"

make -j5(多核编译)
sudo make install(默认安装在/usr/local/Trolltech下)

交叉编译的库可以直接原样放到板子文件系统的/usr/local/Trolltech目录下。需要配置的东西不多,可能只需要设置几个环境变量就可以在板子上跑QT程序了(我记得我只设置了触摸屏、鼠标相关的一个环境变量以便同时使用触摸屏和usb鼠标)。

使用QTSDK中的QT Creator可以配置使用ARM版本的QT库和qmake,或者在PATH环境中增加arm版本的qt库路径,直接qmake & make也可。

出0入0汤圆

发表于 2012-4-9 19:35:25 | 显示全部楼层
交叉编译过程可能会遇到一两个编译错误需要修改sourcecode,google下基本都有解决方法。

出0入0汤圆

发表于 2012-4-9 19:38:39 | 显示全部楼层
可能会有一点点依赖的库,比如说tslib什么的,交叉编译下放到板子的/lib或者/usr/local/lib就好了。

出0入0汤圆

发表于 2012-4-9 19:45:50 | 显示全部楼层
MiniGUI如果不用商业版本的话就不建议用了,开源版本太老,现在而言已经过时了。

GTK可用,用GTK/DirectFB。
WxEmbedded不知道成熟度如何,可以试试看,我想成熟度应当与QT还是有不小差距。而且wx的类MFC风格我不喜欢,所以一直没有兴趣深入学习。
如果是轻量级的GUI,建议可以试试FTK,http://code.google.com/p/ftk/,国内高手的作品。

出0入0汤圆

 楼主| 发表于 2012-4-10 11:18:54 | 显示全部楼层
谢谢各位帮顶。谢谢楼上提供的GUI。

编译那关我应该已经没有问题了。
用arm-linux-gcc 4.3.2和4.4.3都能编译出QT4.7。
4.3.2编译的版本运行程序出现了经典的段错误,4.4.3的话,就说我arm上的glib版本太低,具体为libc.so.6这个符号链接指向的libc-2.8版本<2.9。我把一个libc-2.9复制到开发板,然后删了libc.so.6准备重建符号链接,结果从此杯具。删掉libc.so.6后,一些常用命令(如ls等)没了,按了下reset,进不去系统了。
下面我得去重新编译个内核下进去。无尽的折腾啊。

出0入0汤圆

发表于 2012-4-10 13:54:50 | 显示全部楼层
交叉编译工具链建议你用codesourcery的,不要太新,也不要太老。我用2009q3,gcc版本是4.4.1,glibc是2.10,目前没有遇到任何问题。qt是4.8。

出0入0汤圆

发表于 2012-4-10 14:29:38 | 显示全部楼层
牛啊,我还是用ucos在做。codesourcery很好用,

出0入0汤圆

发表于 2012-4-10 15:04:24 | 显示全部楼层
用QT比较好,论坛也比较多。用MINIGUI,技术支持没有,论坛也少。碰到问题难解决。如果碰不到问题,就没这个难题了。

出0入25汤圆

发表于 2012-4-10 15:25:12 | 显示全部楼层
神马QT,神马MINIGUI,神马WxWidget,,,
要我说:直接上Android,,,这个易于开发,而且界面漂亮,,,,这才是趋势,,

以后ARM9+Linux+QT的组合直接被Cortex-A5+Android的组合替代。。。。

当然,Android的内核还是Linux,所以底层开发,和驱动开发不会受到影响。。至于说应用程序,尤其是人机界面,Android的优势恐怕是其他的界面技术所无法比拟的,毕竟Android的程序已经有几十亿了,而且有Google加这么多公司的支持和投入。。。

至少我是这么认为的,,,

出0入0汤圆

 楼主| 发表于 2012-4-10 18:17:03 | 显示全部楼层
pilgrim_kevin 发表于 2012-4-10 13:54
交叉编译工具链建议你用codesourcery的,不要太新,也不要太老。我用2009q3,gcc版本是4.4.1,glibc是2.10 ...

我下了友善一个较新版的mini2440光盘,烧录了里面的Linux内核,版本比我买的时候的光盘要新,那个zImage带的glib 2.9,我把之前编译好的Qt4.7(用4.4.3编译)的,一运行demos里的程序,依然段错误。一个不小心在一个网上一个不为人知的角落发现一个帖子,说加上参数就解决段错误,我一加,还真行!
例如这样:./hello -qws -fn SIMHEI &
原帖:http://bbs.chinaunix.net/thread-1917490-1-1.html

然后又悲催地发现,触摸屏不能触摸,只能接USB鼠标。我编译时明明include了tslib的啊~~~人生啊。

我决定去找4.1.2的gcc再编译一次。

很悲催,真的。

出0入0汤圆

 楼主| 发表于 2012-4-10 18:19:32 | 显示全部楼层
demoxiedemoxie 发表于 2012-4-10 15:04
用QT比较好,论坛也比较多。用MINIGUI,技术支持没有,论坛也少。碰到问题难解决。如果碰不到问题,就没这 ...

是啊,我发觉我的问题都有人遇到了。

出0入0汤圆

 楼主| 发表于 2012-4-10 18:20:43 | 显示全部楼层
Chuda 发表于 2012-4-10 18:17
我下了友善一个较新版的mini2440光盘,烧录了里面的Linux内核,版本比我买的时候的光盘要新,那个zImage ...

我也想用Android啊,就是缺个手机,缺点动力。

出0入0汤圆

发表于 2012-4-10 19:33:26 | 显示全部楼层
Chuda 发表于 2012-4-10 18:17
我下了友善一个较新版的mini2440光盘,烧录了里面的Linux内核,版本比我买的时候的光盘要新,那个zImage ...

触摸屏要设置一个环境变量。如要同时使用usb鼠标和触摸屏:

export QWS_MOUSE_PROTO='Tslib:/dev/input/event0 intelliMouse:/dev/input/mouse1'

出0入0汤圆

发表于 2012-4-10 19:33:45 | 显示全部楼层
上安卓是趋势

出0入0汤圆

发表于 2012-4-10 19:38:55 | 显示全部楼层
安卓也不能到处适用,尤其是低端一些的设备和工控、专业设备类的。

出0入25汤圆

发表于 2012-4-10 20:02:42 | 显示全部楼层
pilgrim_kevin 发表于 2012-4-10 19:38
安卓也不能到处适用,尤其是低端一些的设备和工控、专业设备类的。

我认为:Android其实就是之前的Linux换了一个界面系统,所以,之前用Linux的地方都可以用Android代替,,,

当然,处理器的性能可能需要提升一些,所以ARM推出了Cortex-A5用于升级、替代早前的ARM9,,,,

出0入0汤圆

发表于 2012-4-11 08:05:07 | 显示全部楼层
还是先学习Linux的说,我用的Qt4.5.2版本编译了两三天才可以,可能是我的Linux版本太高,运行出的Qt 的界面超级的难看

出0入0汤圆

发表于 2012-4-11 08:33:21 | 显示全部楼层
QT.
不知道VS2008,QT那个做的界面炫?
要花哨的界面。

出0入0汤圆

发表于 2012-4-11 09:26:22 | 显示全部楼层
用GTK的路过  

出50入0汤圆

发表于 2012-4-11 09:33:15 | 显示全部楼层
QT的资料少,用起来会麻烦些

出0入0汤圆

发表于 2012-4-11 14:00:21 | 显示全部楼层
XIVN1987 发表于 2012-4-10 20:02
我认为:Android其实就是之前的Linux换了一个界面系统,所以,之前用Linux的地方都可以用Android代替,, ...

android的底层就是linux。

在小设备和专业设备上跑比较单一的应用,有没有必要一定要用android这样带有中间层复杂应用栈的系统?所以还是跟应用场合和需求有关系的。

出0入0汤圆

发表于 2012-4-11 14:01:49 | 显示全部楼层
Excellence 发表于 2012-4-11 08:33
QT.
不知道VS2008,QT那个做的界面炫?
要花哨的界面。

花哨的界面,请学习qt quick。

出0入0汤圆

发表于 2012-4-11 14:12:41 | 显示全部楼层
没有java硬件解码的芯片还是不要用安卓了,慢死人
不知道你的界面是否复杂,不复杂的话可以直接通过framebuffer自己画界面,我正好也要用arm+linux,还有个上位机,原本是打算自己写个gui练练手的,不过这个月写上位机的过程让我又动摇了……有个完善的框架很好,像qt这种,一旦移植好了,数据库,xml,网络等各方面处理起来都会容易很多。
最好是能够保证开发板上的c/c++库和编译qt使用的库是一致的

出0入0汤圆

发表于 2012-4-11 14:35:25 | 显示全部楼层
建议楼主:

任何时候,搞有多层库继承关系的复杂开发项目,绝对不要使用交叉编译,务必要在目标系统上进行本机编译

本机编译可能速度比较慢,但绝对不会出错

当然,用于本机编译的系统,必须有相对于该系统来说最大限度的内存,否则比如编译 X 的时候很可能走不下去

至于说本机编译的系统从哪儿来?个人建议去 Gentoo Linux 的站上看

出0入0汤圆

 楼主| 发表于 2012-4-12 19:59:56 | 显示全部楼层
waitingconfirm 发表于 2012-4-11 14:35
建议楼主:

任何时候,搞有多层库继承关系的复杂开发项目,绝对不要使用交叉编译,务必要在目标系统上进行 ...

可以在ARM上编译?好似真的能行哦,qmake已经放到ARM上,回头一定试试。

出0入0汤圆

 楼主| 发表于 2012-4-12 20:02:02 | 显示全部楼层
感谢各位,这样了:



现在问题是,必须用-fn参数才能避免段错误,而-fn参数后面跟的所谓“字库”可以随便写些东西,我也不知道怎么指定其他字库。
另外是中文暂时不知道怎么显示。

不过没有规定我不能全英文,就英文好了。先把毕设做好了,中文再慢慢折腾。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-4-22 13:55:17 | 显示全部楼层
Chuda 发表于 2012-4-12 20:02
感谢各位,这样了:

我的已经做好了……好像没有那么多挫折,也是用的4.8的源码,mini2440,触摸和中文之类的都解决了

出0入0汤圆

 楼主| 发表于 2012-4-22 14:37:36 | 显示全部楼层
crysislinux 发表于 2012-4-22 13:55
我的已经做好了……好像没有那么多挫折,也是用的4.8的源码,mini2440,触摸和中文之类的都解决了 ...

中文是要自己加字库然后-fn指定吗?

我的挫折来源于对Linux各种不懂啊。

出0入0汤圆

发表于 2012-4-22 15:20:43 | 显示全部楼层
干脆SDL得了

出0入0汤圆

发表于 2012-4-22 17:16:05 | 显示全部楼层
移植过了就好了,忍一次痛吧。

出0入0汤圆

发表于 2012-4-22 20:23:29 | 显示全部楼层
Chuda 发表于 2012-4-22 14:37
中文是要自己加字库然后-fn指定吗?

我的挫折来源于对Linux各种不懂啊。 ...

不用,你说的这种方法可能是早期版本的qt了,现在的qt编译后在lib目录下会有一个fonts目录,把字体文件放进去就行了,点阵或者truetype字体都是可以的

出0入0汤圆

发表于 2012-4-24 08:55:03 | 显示全部楼层
补充一下:国内的MiniGUI刚刚把3.0版本开源了。在android等系统平台的挤压下,飞漫原来卖MiniGUI商业授权的模式已经基本上没什么活路。
有兴趣的也可以用用看,毕竟也是已经做了十年的东西,还算成熟。

出0入0汤圆

发表于 2012-4-24 13:18:57 | 显示全部楼层
gtk,做界面的例子,谁发一个,研究一下怎么搞的

出0入0汤圆

 楼主| 发表于 2012-4-24 22:24:09 | 显示全部楼层
crysislinux 发表于 2012-4-22 20:23
不用,你说的这种方法可能是早期版本的qt了,现在的qt编译后在lib目录下会有一个fonts目录,把字体文件放 ...

我是4.7的,的确有font文件夹。
等毕设全部搞完,再考虑这个字体了,英文也能用的其实。呵呵。

出0入0汤圆

发表于 2012-8-24 12:43:35 | 显示全部楼层
还没用过,正在学习当中

出0入0汤圆

发表于 2012-8-24 12:55:13 | 显示全部楼层
我们公司的招ARM工程师,有木有啊,公司在上海徐汇区漕河径这边

出0入0汤圆

发表于 2012-8-24 13:08:29 | 显示全部楼层
SDL,  很多游戏就是用这个写的,不过控件什么没有
头像被屏蔽

出0入0汤圆

发表于 2012-8-25 07:42:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2012-8-25 08:30:17 | 显示全部楼层
友善和国嵌都不推荐用ubuntu做开发,因为缺少很多库文件。建议楼主换红帽和Fedro吧,至少我是用红帽企业版5,初学者一定要细读用户手册与视频教程,这样可以少走很多弯路。

出0入0汤圆

发表于 2012-8-30 14:21:29 | 显示全部楼层
用android吧

出0入0汤圆

发表于 2012-8-30 17:28:58 | 显示全部楼层
基于GLIB的GTK是个不错的选择。

出0入0汤圆

发表于 2012-9-13 09:37:32 | 显示全部楼层
安卓不是随便上的,毕竟是消费用的操作系统,虽然界面华丽,但是并不稳定,在工业控制设备上用稳定的WINCE和LINUX

出0入0汤圆

发表于 2012-9-13 10:10:11 | 显示全部楼层
lz,用MiniGUI吧,编译相当的简单,界面也够你用的了!
另外,MiniGUI最新版本3.0.12已经开源了哦!
可以试试,而且资料很多!
当然,有问题的话,找我也可以帮帮你哦!

出0入0汤圆

发表于 2012-11-22 15:38:14 | 显示全部楼层
试试这个:http://www.tecgraf.puc-rio.br/iup/
IUP
IUP is a multi-platform toolkit for building graphical user interfaces. It offers a simple API in three basic languages: C, Lua and LED. IUP's purpose is to allow a program source code to be compiled in different systems without any modification. Its main advantages are:

high performance, due to the fact that it uses native interface elements.
fast learning by the user, due to the simplicity of its API.

跨平台,简单,使用native元素,不同系统下风格也是一样的。支持C、Lua、LED语言。

出0入0汤圆

发表于 2012-11-22 21:23:30 | 显示全部楼层
Android的出现,就是为了替代这些个,Q什么,G什么,M什么的~

出0入0汤圆

发表于 2012-11-25 21:48:44 | 显示全部楼层
我的毕设用的就是QT,段错误有可能是库文件的引用不对,建议QT选用的版本不要太高,还有GCC和QT的版本发布日期相差不要太大,我的交叉编译工具链是自己制作的GCC-4.4.6,QT是4.6.3

出0入0汤圆

发表于 2012-11-26 18:57:50 | 显示全部楼层
Zhhu218 发表于 2012-4-11 08:05
还是先学习Linux的说,我用的Qt4.5.2版本编译了两三天才可以,可能是我的Linux版本太高,运行出的Qt 的界面 ...

那个楼主的QT版本确实有点那个了,直接在线安装吧。当然,如果要移植,还得下载源代码

本帖子中包含更多资源

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

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 07:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表