ubuntu12.10 建立qt嵌入式开发环境(二)

来源:互联网 发布:血色十字军 知乎 编辑:程序博客网 时间:2024/05/18 18:45

上一篇只说了主机这边的设置,忽略了开发板那边的设置。

来说说开发板环境的搭建。

如果是初学的话,那么一定要自己移植一下内核,自己做一下文件系统

参考:http://blog.csdn.net/zhaole20094463/article/details/6882266  2440开发板内核移植

            http://blog.csdn.net/zhaole20094463/article/details/8087327  6410内核移植

            http://blog.csdn.net/zhaole20094463/article/details/8087332    6410文件系统制作

            http://blog.csdn.net/zhaole20094463/article/details/6899439     2440根文件系统制作

如果是已经上手了,对嵌入式有一定的了解了那么就直接来开发吧。用官方的内核文件系统不失为一个快的

方法。我采用的开发板是飞凌公司的tiny6410,内核文件系统都是用的官方自带的。

但是他的文件系统中用的是qtopia我用不到,所以为了腾空间就全部给删掉了,装上了我自己移植的qt4.8.3

如果我们要做一个有意思的东西,我想漂亮的交互界面就必不可少了。那么能做出优秀的界面又在嵌入式领域

应用很广泛的是什么呢?答案是唯一的qt

首先我们就是在主机上搭建qt开发环境。

目前的qt正在淡化qt designer  和qt  creater 的区别,qt -creater  现在既能编译工程又可以设计界面,总的来看

是更加的方便了。

从ubutnu软件管理中心中搜素qt 从搜素结果中选择qt创造器(我安装的是中文版)。

这样qtcreater 就有了还差两个qmake 一个是x86的(主机)一个是arm的(开发板)。

怎么办? 来吧,移植吧

参考:http://blog.csdn.net/zhaole20094463/article/details/8683387

1.安装tslib

为什么要装tslib?主要是为了校准触摸屏以及去抖等功能,为了能更好的使用触摸屏还是装吧。
下载地址:http://sourceforge.net/projects/tslib.berlios/files/
网上说的tslib1.4其实就是tslib1.0.4,怎么就变成1.4了,汗。。。这个工具比较小,配置一下后直接编译就行了。

  tar -xvjf tslib-1.0.tar.bz2      
  cd tslib-1.0  ./autogen.sh  ./configure--prefix=/opt/tslib-1.0 --host=arm-linux ac_cv_func_malloc_0_nonnull=yes  make  make install

prefix后面是安装目录,自己随便定义,装好后修改/opt/tslib-1.0/etc/ts.conf,去掉module_raw input 前面的#号,然后把/opt/tslib-1.0里的文件都拷入开发板,比如我放在了/usr/local里。再配置开发板的环境变量,让tslib能正常工作。

1
2
3
4
5
exportsetTSLIB_FBDEVICE=/dev/fb0
exportsetTSLIB_TSDEVICE=/dev/event4
exportsetTSLIB_CONFFILE=/usr/local/etc/ts.conf
exportsetTSLIB_CALIBFILE=/etc/pointercal
exportsetTSLIB_PLUGINDIR=/usr/local/lib/ts

运行/usr/local/bin中的ts_calibrate进行校准,成功的话会出现界面,并让你点击十字符号,完成后会生成/etc/pointercal文件,这是触摸屏的校准配置文件。
遇到的问题:
1.在autogen时出错,提示

./autogen.sh: 4: autoreconf: not found

这是因为系统没有安装automake,装上就行了。

apt-get install autoconf automake libtool

2.安装Qt4.8.3

为了开发方便,我们一般在PC端写好程序,仿真,调试完成后再用arm-linux-gcc编译成arm版的程序,最后拷到开发板上运行。所以我们必须编译两套Qt库文件:PC端的和arm端的。

2.1.安装Linux/X11版Qt

下载页面:http://qt-project.org/downloads
选择Qt libraries 4.8.3 for Linux/X11得到qt-everywhere-opensource-src-4.8.3.tar.gz,这个和Qt libraries 4.8.3 for embedded Linux是同一个文件,配置不同就可以编译出不同的版本,所以我们下一个就行了,解压开,配置,make。

1
2
3
4
5
tar -xvzf qt-everywhere-opensource-src-4.8.3.tar.gz
cd qt-everywhere-opensource-src-4.8.3
./configure-prefix/opt/qt-4.8.3-x11
make
make install
因为库比较大,要编译好一段时间,完成后install,-prefix后面的是安装目录

2.2.安装embedded版Qt

源代码是一样的,重新配置就行了。

1
2
3
./configure-prefix/opt/qt-4.8.3-arm -embedded arm -release -shared-fast -no-largefile -qt-sql-sqlite -qt3support -no-xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -makelibs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -I/opt/tslib-1.0/include-L/opt/tslib-1.0/lib
make
make instal

   dfsdf

不知到你注意到了我加红和加粗的两个选项,这两个选项前面加上-no这个参数

因为我在编译过程中出现了错误:Openssl  not supoort  。。。。。。肯定跟第二个红色参数有关(我安装了相应插件也不好使)

于是我参考网上的另外一篇帖子更改了这两个编译参数,我想第一个应该没有关系不过没做个测试,如果你在做这个的话fast不改试试是不是

我的猜想是正确的,然后留言告诉我。

注意:

这里有一个问题,关于环境变量的

你在编译x11 pc机版本的时候指定了一个安装目录,

在编译arm版本的时候又指定了一个安装目录,你执行第二个编译安装的时候,会发现第二个参数没有起作用,arm版本的东西安装

到了前一个目录里。

我做了很多次实验每次第二个编译目录都把第一个目录替换掉了。这么说来原因大概是环境变量没有被第二个编译文件改变掉。

解决方法:

编译第二个目录时在打开一个终端,将第一终端关闭这样他们的环境变量就不会相互影响了

如果还不行,就把上一个编译目录删掉,在另外一个终端中解压一个新的目录。

编译出来的arm版本中的库传输到开发板上并将指明环境变量即可

配置选项要根据自己的硬件选取,这样编译出来的库文件才会比较小。装好后把目录下的imports、lib、mkspecs 、plugin文件夹拷到开发板上的/opt/Qt目录下,目录随便,和环境变量里的一致就行。然后配置开发板的环境变量,让他能找到Qt。

1
2
3
4
5
6
7
8
9
10
11
exportsetQTDIR=/opt/Qt
exportsetQPEDIR=/opt/Qt
exportsetLD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
exportsetQT_QWS_FONTDIR=$QTDIR/lib/fonts/
exportsetQWS_SIZE=800x480
exportsetQWS_DISPLAY="LinuxFb:mmWidth80:mmHeight120:0"
exportsetQWS_DISPLAY="LinuxFB:/dev/fb0"
exportsetQT_PLUGIN_PATH=$QTDIR/plugins/
exportsetQWS_KEYBOARD="TTY:/dev/tty1"
exportsetQWS_MOUSE_PROTO="TSLIB:/dev/event4"
exportPATH=$QTDIR/bin:$PATH

这样大部分工作就完成了。

原创粉丝点击