Chuda 发表于 2012-4-8 16:58:42

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

本帖最后由 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”。
网上解决这方面问题的文章不多,还扯到什么浮点运算上面去。太复杂啊!

honglai89 发表于 2012-4-8 17:17:57

QT环境编译是比较麻烦 不防试一下MiniGUI
官网 http://www.minigui.org/

YaoHui 发表于 2012-4-8 17:22:33

gtk无根版

coolljt 发表于 2012-4-8 19:01:11

QT确实相当烦啊,曾经编译过,弄了好长时间才弄好

Chuda 发表于 2012-4-8 19:23:13

真的好烦。
网上资料巨多,渐渐发现来来去去都是同一篇文章。昨晚不小心搜到一篇没看过的,才终于在Ubuntu上编译出ARM版本。
今天一天都在纠结ARM上程序无法运行的问题。

康熙通宝 发表于 2012-4-8 19:57:08

可以试试MiniGUI,国产的GUI。不过编译和安装仍然麻烦,要安装n多库和修改源代码。
QT有友善之臂移植好的文件系统可以直接用,楼主干啥还花那么多时间自己弄啊。

jade1988 发表于 2012-4-8 20:12:02

QT挺好啊,函数什么的都写好了,直接调用就行;

jade1988 发表于 2012-4-8 20:16:59

Qt挺好啊,函数都写好了,直接调用就行了,手上有几本书不过上传困难,

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

Chuda 发表于 2012-4-8 20:52:32

jade1988 发表于 2012-4-8 20:16 static/image/common/back.gif
Qt挺好啊,函数都写好了,直接调用就行了,手上有几本书不过上传困难,

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

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

zfszero 发表于 2012-4-8 21:31:10

我感觉QT挺好的,我现在就在用QT4

chinabn 发表于 2012-4-9 09:28:52

wxwidget arm

chinabn 发表于 2012-4-9 09:29:38

wxwidget arm (网络问题,多发了一次)

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

dzmcs 发表于 2012-4-9 09:33:25

毕设也用arm+linux+QT做的飘过,QT很好用的说

pilgrim_kevin 发表于 2012-4-9 17:31:33

基础不足。QT算比较好用的了。搭建QT的开发环境其实不是很麻烦吧,就是库的编译耗时比较长一点。

Rick123 发表于 2012-4-9 17:37:15

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

pilgrim_kevin 发表于 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也可。

pilgrim_kevin 发表于 2012-4-9 19:35:25

交叉编译过程可能会遇到一两个编译错误需要修改sourcecode,google下基本都有解决方法。

pilgrim_kevin 发表于 2012-4-9 19:38:39

可能会有一点点依赖的库,比如说tslib什么的,交叉编译下放到板子的/lib或者/usr/local/lib就好了。

pilgrim_kevin 发表于 2012-4-9 19:45:50

MiniGUI如果不用商业版本的话就不建议用了,开源版本太老,现在而言已经过时了。

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

Chuda 发表于 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,进不去系统了。
下面我得去重新编译个内核下进去。无尽的折腾啊。

pilgrim_kevin 发表于 2012-4-10 13:54:50

交叉编译工具链建议你用codesourcery的,不要太新,也不要太老。我用2009q3,gcc版本是4.4.1,glibc是2.10,目前没有遇到任何问题。qt是4.8。

haimie 发表于 2012-4-10 14:29:38

牛啊,我还是用ucos在做。codesourcery很好用,

demoxiedemoxie 发表于 2012-4-10 15:04:24

用QT比较好,论坛也比较多。用MINIGUI,技术支持没有,论坛也少。碰到问题难解决。如果碰不到问题,就没这个难题了。

XIVN1987 发表于 2012-4-10 15:25:12

神马QT,神马MINIGUI,神马WxWidget,,,
要我说:直接上Android,,,这个易于开发,而且界面漂亮,,,,这才是趋势,,

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

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

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

Chuda 发表于 2012-4-10 18:17:03

pilgrim_kevin 发表于 2012-4-10 13:54 static/image/common/back.gif
交叉编译工具链建议你用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再编译一次。

很悲催,真的。

Chuda 发表于 2012-4-10 18:19:32

demoxiedemoxie 发表于 2012-4-10 15:04 static/image/common/back.gif
用QT比较好,论坛也比较多。用MINIGUI,技术支持没有,论坛也少。碰到问题难解决。如果碰不到问题,就没这 ...

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

Chuda 发表于 2012-4-10 18:20:43

Chuda 发表于 2012-4-10 18:17 static/image/common/back.gif
我下了友善一个较新版的mini2440光盘,烧录了里面的Linux内核,版本比我买的时候的光盘要新,那个zImage ...

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

pilgrim_kevin 发表于 2012-4-10 19:33:26

Chuda 发表于 2012-4-10 18:17 static/image/common/back.gif
我下了友善一个较新版的mini2440光盘,烧录了里面的Linux内核,版本比我买的时候的光盘要新,那个zImage ...

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

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

SNOOKER 发表于 2012-4-10 19:33:45

上安卓是趋势

pilgrim_kevin 发表于 2012-4-10 19:38:55

安卓也不能到处适用,尤其是低端一些的设备和工控、专业设备类的。

XIVN1987 发表于 2012-4-10 20:02:42

pilgrim_kevin 发表于 2012-4-10 19:38 static/image/common/back.gif
安卓也不能到处适用,尤其是低端一些的设备和工控、专业设备类的。

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

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

Zhhu218 发表于 2012-4-11 08:05:07

还是先学习Linux的说,我用的Qt4.5.2版本编译了两三天才可以,可能是我的Linux版本太高,运行出的Qt 的界面超级的难看

Excellence 发表于 2012-4-11 08:33:21

QT.
不知道VS2008,QT那个做的界面炫?
要花哨的界面。

bailangcn 发表于 2012-4-11 09:26:22

用GTK的路过

yuzr 发表于 2012-4-11 09:33:15

QT的资料少,用起来会麻烦些

pilgrim_kevin 发表于 2012-4-11 14:00:21

XIVN1987 发表于 2012-4-10 20:02 static/image/common/back.gif
我认为:Android其实就是之前的Linux换了一个界面系统,所以,之前用Linux的地方都可以用Android代替,, ...

android的底层就是linux。

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

pilgrim_kevin 发表于 2012-4-11 14:01:49

Excellence 发表于 2012-4-11 08:33 static/image/common/back.gif
QT.
不知道VS2008,QT那个做的界面炫?
要花哨的界面。

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

crysislinux 发表于 2012-4-11 14:12:41

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

waitingconfirm 发表于 2012-4-11 14:35:25

建议楼主:

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

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

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

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

Chuda 发表于 2012-4-12 19:59:56

waitingconfirm 发表于 2012-4-11 14:35 static/image/common/back.gif
建议楼主:

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

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

Chuda 发表于 2012-4-12 20:02:02

感谢各位,这样了:



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

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

crysislinux 发表于 2012-4-22 13:55:17

Chuda 发表于 2012-4-12 20:02 static/image/common/back.gif
感谢各位,这样了:




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

Chuda 发表于 2012-4-22 14:37:36

crysislinux 发表于 2012-4-22 13:55 static/image/common/back.gif
我的已经做好了……好像没有那么多挫折,也是用的4.8的源码,mini2440,触摸和中文之类的都解决了 ...

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

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

bygreencn 发表于 2012-4-22 15:20:43

干脆SDL得了

misssomuch 发表于 2012-4-22 17:16:05

移植过了就好了,忍一次痛吧。

crysislinux 发表于 2012-4-22 20:23:29

Chuda 发表于 2012-4-22 14:37 static/image/common/back.gif
中文是要自己加字库然后-fn指定吗?

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

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

pilgrim_kevin 发表于 2012-4-24 08:55:03

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

abnerle 发表于 2012-4-24 13:18:57

gtk,做界面的例子,谁发一个,研究一下怎么搞的

Chuda 发表于 2012-4-24 22:24:09

crysislinux 发表于 2012-4-22 20:23 static/image/common/back.gif
不用,你说的这种方法可能是早期版本的qt了,现在的qt编译后在lib目录下会有一个fonts目录,把字体文件放 ...

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

dgxll 发表于 2012-8-24 12:43:35

还没用过,正在学习当中

weatt123456789 发表于 2012-8-24 12:55:13

我们公司的招ARM工程师,有木有啊,公司在上海徐汇区漕河径这边{:smile:}

huyugv_830913 发表于 2012-8-24 13:08:29

SDL,很多游戏就是用这个写的,不过控件什么没有

liu123748 发表于 2012-8-25 07:42:32

mcu1815 发表于 2012-8-25 08:30:17

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

black8chenqimin 发表于 2012-8-30 14:21:29

用android吧

jetlib 发表于 2012-8-30 17:28:58

基于GLIB的GTK是个不错的选择。

shuiluo 发表于 2012-9-13 09:37:32

安卓不是随便上的,毕竟是消费用的操作系统,虽然界面华丽,但是并不稳定,在工业控制设备上用稳定的WINCE和LINUX

linucos 发表于 2012-9-13 10:10:11

lz,用MiniGUI吧,编译相当的简单,界面也够你用的了!
另外,MiniGUI最新版本3.0.12已经开源了哦!
可以试试,而且资料很多!
当然,有问题的话,找我也可以帮帮你哦!

aleska 发表于 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语言。

linucos 发表于 2012-11-22 21:23:30

Android的出现,就是为了替代这些个,Q什么,G什么,M什么的~

Ubuntu_Redhat 发表于 2012-11-25 21:48:44

我的毕设用的就是QT,段错误有可能是库文件的引用不对,建议QT选用的版本不要太高,还有GCC和QT的版本发布日期相差不要太大,我的交叉编译工具链是自己制作的GCC-4.4.6,QT是4.6.3

wgyoume 发表于 2012-11-26 18:57:50

Zhhu218 发表于 2012-4-11 08:05 static/image/common/back.gif
还是先学习Linux的说,我用的Qt4.5.2版本编译了两三天才可以,可能是我的Linux版本太高,运行出的Qt 的界面 ...

那个楼主的QT版本确实有点那个了,直接在线安装吧。当然,如果要移植,还得下载源代码
页: [1]
查看完整版本: 在ARM上做界面,不用QT行不行?不用Qtopia行不行?