qt-creator在嵌入式的移植方法

更新时间:2024-03-30 18:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

浪费了15积分

操作系统 debian5.0.1 编译器 arm-linux-gcc-4.3.2 先移植 tslib 安装三个工具

apt-get install autoconf automake libtool 运行脚本

./autogen.sh 注(不知道为什么,这行脚本中有 echo 但是 终端不显示)

3帧缓冲文件以及配置

echo \

避免检查ac_cv_func_malloc_0_nonnull,如果不写这句,在Make时候会出现undefined reference to `rpl_malloc' 的错误。

./configure --prefix=/home/tslib --host=arm-linux --cache-file=$ARCH_tslib.cache --enable-inputapi=no make make install

此时会在/home/tslib 目录中有东西出来,把 tslib 目录 拷贝到开发板目录下的/home 目录中 在开发板中配置环境变量

export TSLIB_ROOT=/home/tslib

export TSLIB_TSDEVICE=/dev/event0 #(某些好像是 /dev/input/event0) 看实际情况来确定

export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0 #(某些好像是 /dev/fb/0) 看实际情况来确定

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

下面是Tslib 1.4中的ts.conf的参考配置:

# Uncomment if you wish to use the linux input layer event interface

# module_raw input 把#去掉

在开发板中进入 /home/tslib/bin 运行 ./ts_calibrate

如果没问题,此时屏幕能正确校准,如果有问题不能运行或者其它,请赶紧删掉重做吧. 再移植 qt embedded 我的配置参数如下:

(./configure -prefix / usr/local/Trolltech/QtEmbedded-4.6.2-arm -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -armfpa -qt-mouse-tslib -I/tslib-1.4/inclued -L/tslib-1.4/lib)

(./configure -prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm

-opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 16,18,24 -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype

-little-endian -host-little-endian -no-qt3support -no-libtiff

-no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit -no-qvfb -no-phonon -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -nomake examples -nomake tools -nomake docs -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib)

./configure -prefix /mini2440 -release -shared -fast -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -fast -pch -no-qt3support -no-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -qt-mouse-tslib -no-mouse-pc -no-mouse-linuxtp

有一些我很疑惑,我明明 '-qt-mouse-tslib' 参数,但我却不向别人那样 使用-I -L 指定头与库,配置也不报错...很郁闷...不过,不出问题,我不管它,继续. make -C src/ make install

此时会在 /mini2440 目录中生成头文件与库,在开发板的 / 目录下也建立相同的mini2440目录,把lib文件夹 考过去.

编译测试程序,在 examples/qws/mousecalibration 目录下 运行make

我修改了Makefile 文件,修改了如下一行 -L/home/tslib/lib -lts ,在原有的 -lts 之前加上了使用此库的路径,表示使用我刚刚编译过的libts库来连接.

之后把程序考入开发板的目录 为开发板增加环境变量

export QTDIR=/mini2440 export

LD_LIBRARY_PATH=$QTDIR/lib:/home/tslib/lib:$LD_LIBRARY_PATH export QWS_KEYBOARD='LIRC:/dev/lircd' export QWS_MOUSE_PROTO=tslib:/dev/event0

在开发板中运行 mousecalibration 进行QT的效准,OK 触摸屏正常使用

Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440(一)

参考:

http://hi.http://www.wodefanwen.com//jiyeqian/blog/item/f46d26a2ff3f7da6caefd0d6.html http://blog.csdn.net/dongliqiang2006/archive/2009/08/30/4500002.aspx

环境:虚拟机Fedora12(建议安装Vmware Tools,详细安装方法参照Vmware帮助文档),USB串口,minicom终端。(minicom经常打不开ttyUSB0设备,

我的解决方法是,打不开时就将USB串口移除,运行minicom,然后再接上USB串口,此时运行minicom一般都能打开设备)

软件准备:

到http://qt.nokia.com/downloads-cn下载最新版的软件包,当前是:

用于 Linux/X11 32位 的 Qt Creator 1.3.1 二进制软件包qt-creator-linux-x86-opensource-1.3.1.bin

(http://qt.nokia.com/downloads/qt-creator-binary-for-linux-x11-32-bit)

用于嵌入式 Linux 的 Qt 库 4.6.2包qt-everywhere-opensource-src-4.6.2.tar.gz(http://qt.nokia.com/downloads/embedded-linux-cpp)

到http://hi.http://www.wodefanwen.com//jiyeqian/blog/item/f46d26a2ff3f7da6caefd0d6.html下载arm920t-eabi.tgz(即arm-linux-gcc-4.1.2)

(http://qtextended.org/downloads/toolchains/arm920t-eabi.tgz)

到http://www.arm9.net/download.asp下载Root_Qtopia,我用的是友善光盘里的root_qtopia-20100108.tar.gz

(http://www.arm123.com.cn/linux/root_qtopia-20100108.tar.gz)

下载tslib1.4,这个忘了在哪下载的了,网上有很多,有些不能用,大家自己找个能用的吧。

*以下安装方法主要来自文章

http://hi.http://www.wodefanwen.com//jiyeqian/blog/item/f46d26a2ff3f7da6caefd0d6.html

将 qt-everywhere-opensource-src-4.6.2.tar.gz 压缩包解压为3份,分别编译 PC ,嵌入式 x86 和 arm 三个版本。

我在root目录下建立tmp文件夹,将qt-everywhere-opensource-src-4.6.2.tar.gz直接解压后复制2分,分别命名为pc、x86、arm。

1. 编译 PC 版: 进入pc目录 #./configure # gmake # gmake install

安装过程比较长,没有碰到过错误。

2. 编译嵌入式x86版: 进入x86目录

# ./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb # gmake # gmake install

安装过程比较长,没有碰到过错误。

编译安装PC版中的 qvfb: 进入pc/tools/qvfb/目录 #make

编译完毕,将pc/bin目录下的qvfb文件复制到/usr/local/Trolltech/QtEmbedded-4.6.2/bin目录。

3. 编译嵌入式arm版(需要 arm-linux-gcc 的支持):

使用友善自带的ARM-Linux GCC 4.3.2编译完了,程序移植到开发板上后,出现Segmentation Fault错误,按原文,使用4.1.2正常。

直接将arm920t-eabi.tgz解压缩到根目录,不可以像文章中说的那样“我把它放在:/usr/local/arm/4.1.2/ ”,最起码我放过去后出错了。 把编译器路径加入系统环境变量,运行命令: #gedit /root/.bashrc

编辑/root/.bashrc文件,在最后一行加上 export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH

编译tslib对触摸屏支持: 下载,tslib1.4.tar.gz,解压后:

# ./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes # make # make install

我下载的包解压后没有configure文件,需要运行autogen.sh后才能生成。

设置环境变量,以便编译时找到相关的库: # export CPLUS_INCLUDE_PATH=/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/include/c++:/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/include/c++/arm-none-linux-gnueabi # export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH

修改qt-everywhere-opensource-src-4.6.2/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts参数):

QMAKE_CC = arm-linux-gcc -lts QMAKE_CXX = arm-linux-g++ -lts QMAKE_LINK = arm-linux-g++ -lts QMAKE_LINK_SHLIB = arm-linux-g++ -lts 这一步必须有,不然肯定出错。

配置:

必须加上“-prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm ”参数, 不然安装后不在QtEmbedded-4.6.2-arm文件夹下,而是覆盖了QtEmbedded-4.6.2。 # ./configure \\

-prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm \\ -opensource \\ -confirm-license \\ -release -shared \\ -embedded arm \\

-xplatform qws/linux-arm-g++ \\ -depths 16,18,24 \\ -fast \\

-optimized-qmake \\ -pch \\ -qt-sql-sqlite \\ -qt-libjpeg \\ -qt-zlib \\ -qt-libpng \\ -qt-freetype \\

-little-endian -host-little-endian \\ -no-qt3support \\ -no-libtiff -no-libmng \\ -no-opengl \\

-no-mmx -no-sse -no-sse2 \\ -no-3dnow \\ -no-openssl \\ -no-webkit \\

-no-qvfb \\ -no-phonon \\ -no-nis \\ -no-opengl \\ -no-cups \\ -no-glib \\

-no-xcursor -no-xfixes -no-xrandr -no-xrender \\ -no-separate-debug-info \\

-nomake examples -nomake tools -nomake docs \\

-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib

上面划掉的蓝色内容,可以不要的,这样编辑也不会出错(虚拟机搞坏了,不得已重装,配置参数时忘了干上面的工作了,结果发现没出错)。

关于配置参数,参照一下这篇文章吧,可以用configure -embedded –help查看。

http://www.cuteqt.com/blog/?p=582

如果你放弃配置,则使用命令:# gmake confclean

编译:# gmake

安装:# gmake install

安装完成后,在 /usr/local/Trolltech 目录中有三个文件夹:Qt-4.6.2、QtEmbedded-4.6.2、QtEmbedded-4.6.2-arm。

4、移植

我是通过NFS启动的系统,具体操作可以参照友善的手册,在

http://www.arm9.net/download.asp有下载,在第5.5.3节通过NFS启动系统。

将Fedora12上 /usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib 中的所有文件复制到

/opt/FriendlyARM/mini2440/root_qtopia/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib目录中(对应目录复制,相当于复制到了开发板对应目录中),其实需要的时候可以裁剪,看原文吧。

将Fedora12上 /usr/local/tslib 中的库复制到

/opt/FriendlyARM/mini2440/root_qtopia/usr/local中。即将/usr/local/tslib下的所有文件复制到/opt/FriendlyARM/mini2440/root_qtopia/usr/local文件夹下。

如果运行时还缺少其他的库,复制方法相同。也可以使用

arm-angstrom-linux-gnueabi-readelf -a 程序名 | grep \,命令查看需要哪些共享库,一起复制过去。

为支持触摸屏,开机自动设置环境变量,在2440的 /etc/profile中追加: export

LD_LIBRARY_PATH=/usr/local/lib:$QTDIR/lib:$LD_LIBRARY_PATH

export TSLIB_ROOT=/usr/local/lib export TSLIB_TSDEVICE=/dev/input/event0 export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_PLUGINDIR=/usr/local/lib/ts export TSLIB_CONSOLEDEVICE=none export TSLIB_CONFFILE=/usr/local/etc/ts.conf export POINTERCAL_FILE=/etc/pointercal export TSLIB_CALIBFILE=/etc/pointercal

export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

取消/usr/local/etc/ts.conf中的第一个注释: # module_raw input (去掉#,并且该行顶格) 我编辑时没有“#”

启动Micro2440运行 /usr/local/bin/ts_calibrate 校正触摸屏。

到此Qt4.6.2的移植暂告一段落,移植还没有完,此时如果在开发板上运行Qt4.6.2-arm编译的程序,则会出现“relocation error:

/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtGui.so.4: symbol powf, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference”错误。

Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440(二)

继续??

5、安装Qt-creator-1.3.1

把下载的qt-creator-linux-x86-opensource-1.3.1.bin文件拷到一个目录(如前面的/root/tmp目录),进入目录:

设置qt-creator-linux-x86-opensource-1.3.1.bin文件为可执行 #chmod +x qt-creator-linux-x86-opensource-1.3.1.bin

安装:

# ./ qt-creator-linux-x86-opensource-1.3.1.bin

启动安装界面,默认一路Next即可。

*如果我们下载的是Qt的SDK(qt-sdk-linux-x86-opensource-2010.02.bin),这里可以选择安装Qt的开发环境,这样,在前面安装pc版Qt那步就可以省了,关键是可以省出很多时间的。

6、Qt-creator开发环境的配置 启动Qt-creator。

在Qt-creator菜单栏Tools—〉Options…打开Options窗口。

在Options界面左侧,点击Qt4—〉Qt Versions右侧显示Qt Versions设置界面。

在Qt Versions界面中点击那个蓝色的大“╋”号图标

在下方Version Name:文本框内输入Qt的版本名,可以随便填,能区分各个版本即可(如pc版取Qt4.6.2-pc、x86版取QtE4.6.2-x86、arm版取QtE4.6.2-arm)。

单击Qmake Location:右侧Browse…按钮,在弹出的“Select QMake

Executable”窗口中找到对应版本的qmake程序(按照我们前面安转的,pc版路径:/usr/local/Trolltech/Qt-4.6.2/bin/qmake,x86版路径:/usr/local/Trolltech/QtEmbedded-4.6.2/bin/qmake,arm版路径:

/usr/local/Trolltech/QtEmbedded-4.6.2-arm/bin/qmake),单击打开,回到Qt Versions界面。

回到Qt Versions界面,单击Debugging Helper:右侧Rebuild按钮,等待片刻,看到Debugging Helper:后出现一个绿色的“√”即可。

同理完成其他版本的添加。

添加完毕,单击OK按钮关闭Options窗口。

到此,Qt-creator配置完毕(我暂时就配置了这些)。

7、一个例子

从usr/local/Trolltech/QtEmbedded-4.6.2/demos下复制books例程到root/tmp文件夹下。

启动Qt-creator,File—〉Open File or Project…,打开root/tmp/books/books.pro。

这里我们分两部分,首先编译x86下的,并运行在qvfb下,再编译arm下的,移到开发板下运行。

7.1、x86下的编译与调试

在Qt-creator界面左侧点击Projects图标,打开工程设置界面。

从上往下,

在Edit Project Settings for Project books——〉Build Settings——〉Edit Build Configuration:单击Add,在下拉列表中选择Using Qt Version “QtE4.6.2-x86”弹出对话框单击Ok按钮,在Edit Build Configuration:下会出现蓝色的Make QtE4.6.3-x86 Release active.字符,单击激活QtE4.6.3-x86 Release。

在Run Settings——〉Edit run configuration:右侧单击Show Details按钮,在打开的下拉列表中Arguments:文本框中添加参数“-qws”。

设置完毕,点击Edit图标,回到编辑界面。

编译:在Build菜单下,先Clean Project “books”,然后Build Project “books”,在右下角Compile Output窗口能看到编译信息(按我们上面这样走来,到此编译不会出问题的)。

运行:

启动终端,# /usr/local/Trolltech/QtEmbedded-4.6.2/bin/qvfb -width 800 -height 480 &,启动Qvfb。

回到Qt-creator,Build——〉Run,运行程序。

切换我们的Qvfb窗口中,是不是看到Books运行的界面了。

调试:Debug——〉Start Debugging——〉Start Debugging,即可启动调试(请保证books路径中没有中文名,即不要把books工程放在了某个含有中文字符的文件夹下,不然无法启动调试)。

此时感觉如果前面编译选项Edit Project Settings for Project books——〉Build Settings——〉Edit Build Configuration:选择Debug项,则调试启动速度比Release时的要快很多。

7.2、arm编译并移植

编译:在Projects设置界面下,选择Using Qt Version “QtE4.6.2-arm”项,余下参数不变,build。

复制编译好的文件(也许还有images文件夹)到2440的NFS文件系统的某个目录下,我直接把books文件夹复制过去了(在Fedora12 文件系统下是/opt/FriendlyARM/mini2440/root_qtopia/home/plg文件夹下)。

运行及错误处理:

在minicom下面,ps一下,找到qpe进程对应的PID,比如1234,然后通过kill 1234杀死Qtopia。

进入books目录,执行./books –qws,此时就会出现前面讲到的“relocation error: /usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtGui.so.4: symbol powf, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference”错误。

我的解决办法是进入主机

/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib目录下找到

libstdc++.so.6链接的文件libstdc++.so.6.0.8(通过右键属性——〉基本,可以看到链接的文件),复制并重命名为libstdc++.so.6到

/opt/FriendlyARM/mini2440/root_qtopia/lib文件夹下,之前别忘了将该文件夹下的libstdc++.so.6移到其它地方或重命名,如libstdc++.so.6.old。

*重命名其实是比较野蛮的方法,可以用ln命令的,参照下面这篇文章??

http://hi.http://www.wodefanwen.com//a263238386/blog/item/362f01ce7b11a10a93457eae.html

然后再运行./books –qws,看问题是不是解决了!

这里有个新的问题还没解决,就是在开发版上运行时字非常小,留着以后处理吧。

OK!至此,Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440算告一段落了,留下两个问题:字体非常小的问题、开发板上的远程调试,留待下次解决。

1 加载USB摄像头驱动程序

Linux下自带有ov511控制芯片的USB摄像头驱动,但是我们使用的是中星微的摄像头,所以无法直接使用。目前Linux下的开源USB摄像头驱动spca5xx支持中星微的摄像头。在网上下载好源码,交叉编译成内核模块后使用insmod命令加载到系统中去。把摄像头连接到开发板上,发现可以识别到摄像头,下面我们就可以进行摄像头图像采集编程了。

2 Linux下的视频采集编程接口简介

Linux对于视频采集设备的支持,是通过Video For Linux实现的,通常可以简称为V4L,现在较高版本的Linux内核都已经包含了Video For Linux。Video For Linux是为各种电视卡,以及并口和USB接口的音视频采集设备提供统一的编程接口,在Linux 下,视频采集设备的正常使用依赖于对Video For Linux标准的支持。

3 基于Video For Linux的图片捕捉

基于Video For Linux的图片捕捉流程如图所示,主要包括三个部分:初始化,同步,读取数据。 命令“

rpm -Uvh libusb-0.1.8-2.1.i386.rp

由于友善之臂太吊了,触屏幕驱动已经完美搞定,而且光盘里还有Arm-linux-gcc 4.3.2,省了我不少事 这次移植很顺利

先移植tslib

解压之后,执行./autogen.sh 生成configure 然后

echo ac_cv_func_malloc_0_nonnull=yes>arm-linux.cache

这句很重要,大意是不使用malloc之类的,如果没有这个,极其有可能出错 最后

./configure --host=arm-linux --prefix=/opt/ts

接下来是QT QT的configure参数

./configure \\ -prefix /qtlib/ \\ -release -shared \\ -fast \\ -pch \\

-no-qt3support \\ -qt-sql-sqlite \\ -no-libtiff -no-libmng \\ -qt-libjpeg \\ -qt-zlib \\ -qt-libpng \\ -qt-freetype \\ -no-openssl \\

-nomake examples -nomake demos \\ -optimized-qmake \\ -no-phonon \\ -no-nis \\ -no-opengl \\ -no-cups \\

-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm\\ -no-xinerama -no-xshape \\ -no-separate-debug-info \\ -xplatform qws/linux-arm-g++ \\ -embedded arm \\ -depths 16 \\ -no-qvfb \\ -qt-gfx-linuxfb \\

-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb\\ -qt-kbd-usb \\ -confirm-license \\

-qt-mouse-tslib -I/opt/ts/include -L/opt/ts/lib

最后一句定义使用tslib作为鼠标驱动,-I和-L指定tslib的include文件和lib文件位置 为了节省时间,很多地方都nomake了

搞定,nfs到开发板上,再设置一下环境变量 export TSLIB_TSDEVICE=/dev/input/event0 export TSLIB_CONFFILE=/opt/ts/etc/ts.conf export TSLIB_PLUGINDIR=/opt/ts/lib export TSLIB_CALIBFILE=/etc/pointercal export QTDIR=/opt/qt4 export QPEDIR=/opt/qt4 export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

最后一句比较重要,大概是指定QWS的鼠标类型,即指定使用tslib,如果没有设置这个,QWS则不会对触屏有响应

运行demo里面的mousecalibration,完美成功~~~

接下来开始学一下QWebView的使用,写个简易浏览器试试看

(原文件名:video.jpg)

引用图片

图片捕捉流程见上图,主要包括3个步骤:

1)初始化:首先是使用open函数打开视频设备文件,而且是独占的可读模式。然后使用

Video For Linux接口函数设置视频设备的数据通道,设置视频数据传输的模式,可选的有NSTC或者PAL等。为了方便读取图像数据,使用mmap函数建立内存映射,在应用程序中直接读取图像数据。最后就是设置要捕捉的图片大小,即分辨率,我使用的摄像头最大可以提供分辨率800*600,每秒25张图片。

2)同步:等待一帧视频数据采集完毕后才能读取数据,否则将出现错误,同时还可以对帧号进行操作。

3)读取数据:我们使用的中星微摄像头传输过来的图片已经是JPEG编码格式。

下图就是使用Video For Linux采集的320*240的jpeg格式图片。

http://blog.simophin.net/?p=559

在mini2440上移植qt embedded for linux 4.5.2

作者:孙晓明,华清远见嵌入式学院讲师。

【实验环境】

1、主 机:Fedora9 DVD 发行版 2、目标机:mini2440友善之臂 3、源码包:

ftp://ftp.qtsoftware.com/qt/source/qt-embedded-linux-opensource-src-4.5.2.tar.gz 4、编译器 arm-linux-gcc-4.1.2

http://qtextended.org/downloads/toolchains/arm920t-eabi.tgz

我这几天移植qt-embedded-linux-opensource-src-4.5.2 因为之前使用友善的 arm-linux-gcc-4.3.2编译qt-embedded-linux-opensource-src-4.5.2 没有错误,但是运行 例子程序

example/widget/analogclock/analogclock -qws & 就会出段错误, 所有改用 openmoko的arm-linux-gcc-4.1.2编译, 最后可以成功看到界面。

移植的tslib1.4 在,并且运行ts_calibrate 五点校准,触摸屏是有反应的,并能生成/etc/pointercal ts_test 也是好使的,拖拽都没有问题。 但是就是运行移植的 QTE的程序 触摸屏一点反应也没有。 顺便说一下,内核还是用的mini2440出厂时nand里的linux-2.6.29,没有动过,触摸屏已经是被内核支持了。

这是我配置的环境变量:

以下环境变量都是我在终端敲入的

export QTDIR=/usr/local/QtEmbedded-4.5.2-moko-arm export QPEDIR=/usr/local/QtEmbedded-4.5.2-moko-arm export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH

export TSLIB_ROOT=/usr/local/tslib export TSLIB_TSDEVICE=/dev/event0

export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts export TSLIB_CONSOLEDEVICE=none

export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf export POINTERCAL_FILE=/etc/pointercal export TSLIB_CALIBFILE=/etc/pointercal export QWS_MOUSE_PROTO=Tslib:/dev/event

这是我安装tslib1.4的步骤:

一、tslib移植

第一步:解压tslib-1.4.tar.gz

tar -zxvf tslib-1.4.tar.gz

第二步:进入解压过的目录

cd tslib-1.4

第三步:执行tslib-1.4目录下的autogen.sh

./autogen.sh

第四步:执行autogen.sh脚本所生成的Makefile文件 在命令行打入以下命令:

echo \

./configure --host=arm-linux --prefix=/usr/local/tslib --cache-file=$ARCH-linux.cache

第五步: make make install

第六步:把指定安装目录下的tslib的文件都copy到你所挂载的根文件下

sudo cp -a /home/linux/tslib/* /opt/FriendlyARM/mini2440/root_qtopia/usr/local/tslib/

第七步:修改/opt/FriendlyARM/mini2440/root_qtopia/usr/local/tslib/ 下的etc目录中ts.conf文件

vi ts.conf 将第二行的#module_raw input修改成module_raw input 注意一定要顶格写否则程序执行时会发生读取ts.conf错误

Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440(一)

10-04-29 12:20 发表于:《南京嵌入式开发圈》 分类:未分类 环境:虚拟机Fedora12(建议安装Vmware Tools,详细安装方法参照

Vmware帮助文档),USB串口,minicom终端。(minicom经常打不开ttyUSB0设备,我的解决方法是,打不开时就将USB串口移除,运行minicom,然后再接上USB串口,此时运行minicom一般都能打开设备)

软件准备:

到http://qt.nokia.com/downloads-cn下载最新版的软件包,当前是:

用于 Linux/X11 32位 的 Qt Creator 1.3.1 二进制软件包qt-creator-linux-x86-opensource-1.3.1.bin

(http://qt.nokia.com/downloads/qt-creator-binary-for-linux-x11-32-bit)

用于嵌入式 Linux 的 Qt 库 4.6.2包qt-everywhere-opensource-src-4.6.2.tar.gz

(http://qt.nokia.com/downloads/embedded-linux-cpp)

到http://hi.http://www.wodefanwen.com//jiyeqian/blog/item/f46d26a2ff3f7da6caefd0d6.html下载arm920t-eabi.tgz(即arm-linux-gcc-4.1.2)

(http://qtextended.org/downloads/toolchains/arm920t-eabi.tgz)

到http://www.arm9.net/download.asp下载Root_Qtopia,我用的是友善光盘里的root_qtopia-20100108.tar.gz

(http://www.arm123.com.cn/linux/root_qtopia-20100108.tar.gz)

下载tslib1.4,这个忘了在哪下载的了,网上有很多,有些不能用,大家自己找个能用的吧。

*以下安装方法主要来自文章

http://hi.http://www.wodefanwen.com//jiyeqian/blog/item/f46d26a2ff3f7da6caefd0d6.html

将 qt-everywhere-opensource-src-4.6.2.tar.gz 压缩包解压为3份,分别编译 PC ,嵌入式 x86 和 arm 三个版本。

我在root目录下建立tmp文件夹,将

qt-everywhere-opensource-src-4.6.2.tar.gz直接解压后复制2分,分别命名为pc、x86、arm。

1. 编译 PC 版: 进入pc目录 #./configure # gmake

# gmake install

安装过程比较长,没有碰到过错误。

2. 编译嵌入式x86版: 进入x86目录

# ./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb # gmake

# gmake install

安装过程比较长,没有碰到过错误。

编译安装PC版中的 qvfb: 进入pc/tools/qvfb/目录 #make

编译完毕,将pc/bin目录下的qvfb文件复制到/usr/local/Trolltech/QtEmbedded-4.6.2/bin目录。

3. 编译嵌入式arm版(需要 arm-linux-gcc 的支持):

使用友善自带的ARM-Linux GCC 4.3.2编译完了,程序移植到开发板上后,出现Segmentation Fault错误,按原文,使用4.1.2正常。

直接将arm920t-eabi.tgz解压缩到根目录,不可以像文章中说的那样“我把它放在:/usr/local/arm/4.1.2/ ”,最起码我放过去后出错了。 把编译器路径加入系统环境变量,运行命令: #gedit /root/.bashrc

编辑/root/.bashrc文件,在最后一行加上 export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH

编译tslib对触摸屏支持:

下载,tslib1.4.tar.gz,解压后:

# ./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes # make

# make install

我下载的包解压后没有configure文件,需要运行autogen.sh后才能生成。

设置环境变量,以便编译时找到相关的库: # export

CPLUS_INCLUDE_PATH=/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/include/c++:/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/include/c++/arm-none-linux-gnueabi

# export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH 修改

qt-everywhere-opensource-src-4.6.2/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts参数):

QMAKE_CC = arm-linux-gcc -lts QMAKE_CXX = arm-linux-g++ -lts QMAKE_LINK = arm-linux-g++ -lts QMAKE_LINK_SHLIB = arm-linux-g++ -lts 这一步必须有,不然肯定出错。

配置:

必须加上“-prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm ”参数, 不然安装后不在QtEmbedded-4.6.2-arm文件夹下,而是覆盖了QtEmbedded-4.6.2。 # ./configure \\

-prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm \\ -opensource \\ -confirm-license \\ -release -shared \\ -embedded arm \\

-xplatform qws/linux-arm-g++ \\ -depths 16,18,24 \\ -fast \\

-optimized-qmake \\ -pch \\

-qt-sql-sqlite \\ -qt-libjpeg \\ -qt-zlib \\ -qt-libpng \\ -qt-freetype \\

-little-endian -host-little-endian \\ -no-qt3support \\

-no-libtiff -no-libmng \\ -no-opengl \\

-no-mmx -no-sse -no-sse2 \\ -no-3dnow \\ -no-openssl \\ -no-webkit \\ -no-qvfb \\ -no-phonon \\ -no-nis \\ -no-opengl \\ -no-cups \\ -no-glib \\

-no-xcursor -no-xfixes -no-xrandr -no-xrender \\ -no-separate-debug-info \\

-nomake examples -nomake tools -nomake docs \\

-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib

上面划掉的蓝色内容,可以不要的,这样编辑也不会出错(虚拟机搞坏了,不得已重装,配置参数时忘了干上面的工作了,结果发现没出错)。

关于配置参数,参照一下这篇文章吧,可以用configure -embedded –help查看。

http://www.cuteqt.com/blog/?p=582

如果你放弃配置,则使用命令:# gmake confclean

编译:# gmake

安装:# gmake install

安装完成后,在 /usr/local/Trolltech 目录中有三个文件夹:Qt-4.6.2、QtEmbedded-4.6.2、QtEmbedded-4.6.2-arm。

4、移植

我是通过NFS启动的系统,具体操作可以参照友善的手册,在

http://www.arm9.net/download.asp有下载,在第5.5.3节通过NFS启动系统。

将Fedora12上 /usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib 中的所有文件复制到

/opt/FriendlyARM/mini2440/root_qtopia/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib目录中(对应目录复制,相当于复制到了开发板对应目录中),其实需要的时候可以裁剪,看原文吧。

将Fedora12上 /usr/local/tslib 中的库复制到

/opt/FriendlyARM/mini2440/root_qtopia/usr/local中。即将/usr/local/tslib下的所有文件复制到/opt/FriendlyARM/mini2440/root_qtopia/usr/local文件夹下。

如果运行时还缺少其他的库,复制方法相同。也可以使用

arm-angstrom-linux-gnueabi-readelf -a 程序名 | grep \,命令查看需要哪些共享库,一起复制过去。

为支持触摸屏,开机自动设置环境变量,在2440的 /etc/profile中追加: export

LD_LIBRARY_PATH=/usr/local/lib:$QTDIR/lib:$LD_LIBRARY_PATH

export TSLIB_ROOT=/usr/local/lib

export TSLIB_TSDEVICE=/dev/input/event0 export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_PLUGINDIR=/usr/local/lib/ts export TSLIB_CONSOLEDEVICE=none

export TSLIB_CONFFILE=/usr/local/etc/ts.conf export POINTERCAL_FILE=/etc/pointercal export TSLIB_CALIBFILE=/etc/pointercal

export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

取消/usr/local/etc/ts.conf中的第一个注释: # module_raw input (去掉#,并且该行顶格) 我编辑时没有“#”

启动Micro2440运行 /usr/local/bin/ts_calibrate 校正触摸屏。

到此Qt4.6.2的移植暂告一段落,移植还没有完,此时如果在开发板上运行Qt4.6.2-arm编译的程序,则会出现“relocation error:

/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtGui.so.4: symbol powf, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference”错误。 编译QT4-embedded-4.4.3

# tar jxvf qt-embedded-linux-opensource-src-4.4.0.tar.bz2 # mv qt-embedded-linux-opensource-src-4.4.0 qt-embedded-linux-opensource-src-4.4.0-arm

# cd qt-embedded-linux-opensource-src-4.4.0-arm

#./configure -prefix /usr/local/Trolltech/QtEmbedded-4.6.3-arm –opensource -confirm-license -release -shared -fast -pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -nomake examples -nomake demos -nomake tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb -confirm-license -qt-mouse-tslib -qconfig nocursor -I/home/tslib-1.3/build/include -L/home/tslib-1.3/build/lib

参考““./configure -prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 16,18,24 -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian

-host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit -no-qvfb -no-phonon -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -nomake examples -nomake tools

-nomake docs -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib“ 其中-prefix /home/qt4arm 是你要安装的路径。

-I/home/tslib-1.3/build/include -L/home/tslib-1.3/build/lib是你刚才编译好的tslib-1.3的两个文件夹路径。 几分钟后配置完毕

# make && make install

一共需要一个半小时(虚拟机下编译,本机配置为1G内存,AMD1.8G单核CPU)。 把所需要的库拷贝到开发板的相应的目录即可,最好和prefix参数的目录一致,像我的就是拷贝到/home/qt4arm/lib下,当然有的库你可以不需要拷贝的,运行程序提示缺啥就拷贝啥。

然后拷贝显示中文的文泉驿字体wenquanyi_160_75.qpf 到/home/qt4arm/lib/font下。

最后拷贝tslib-1.3下build文件夹到开发板相应地方。 3,设置坏境变量

export QTDIR=/home/qt4arm export PATH=$QTDIR/bin:$PATH

export QWS_DISPLAY=LinuxFb:/dev/fb0 export QWS_SIZE=640x480 export QWS_SW_CURSOR=1

export QWS_MOUSE_PROTO=Tslib:/dev/event0 export QWS_KEYBOARD=TTY:/dev/tty0 export QT_ONSCREEN_PAINT=0

export PONTERCAL_FILE=/etc/pointercal

export LD_LIBRARY_PATH=$QTDIR/lib:/lib:/usr/lib:$LD_LIBRARY_PATH export TSLIB_TSDEVICE=/dev/event0 export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_CONFFILE=/etc/ts.conf export TSLIB_PLUGINDIR=/lib/ts

export TSLIB_CONSOLEDEVICE=/dev/tty export TSLIB_FBDEVICE=/dev/fb0

mini2440 qt4 移植(转+自己添加)

LInux环境搭建与设置 2009-04-24 10:06:49 阅读1974 评论5 字号:大中小

由于mini2440的光盘里自带一个root_default.tgz根文件,因此省了很大一部分力气自己去裁剪,但是也有很大的缺陷就是:本身就对内核不熟悉,

现在跳过了这一步,就更加不理解了。以后还是要补上来。

我做的时候现在fc8下试过,第一次是配置的时候“The tslib functionality test

failed!”错误

但是不明白原因的,我是按照下面的配置来的还是出问题了。

去掉后根据./configure -h 的提示配置完成,gmake到某处时,错误中断。试

了几次都是这样 也许是我的fc8并非完全安装吧。最后换到了亲爱的RH9.0下,按照下面的指示编译成功。不过还有个现象就是在fc8下安装qt-x11可以成功,RH9.0下安装qt-x11就失败了。可能是GCC版本的问题了。在RH9.0下我用的是

tslib-1.3

1.编译tslib-1.4 (这部分很好ts-lib的编译还算顺利了)

解压到/home下

#./autogen.sh

#./configure --prefix=/home/duancp/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes (可以先生成个cache文件)

#make

#make install-strip //生成瘦身应用程序和库

2.安装arm-linux-gcc-3.4.1.tar.bz2

在根目录下解压,解压后的默认目录在/usr/local/arm/3.4.1

设置环境变量,运行命令:

vi /etc/profile

加入 export PATH=/usr/local/arm/3.4.1/bin:$PATH 3.编译qt-embedded-linux-opensource-src-4.4.3.tar.gz tar zxf qt-embedded-linux-opensource-src-4.4.3.tar.gz

cd qt-embedded-linux-opensource-src-4.4.3 (我的QT的安装目录设置为根目录下的/minin2440)

./configure -prefix /mini2440 -release -shared -fast -pch -no-qt3support

-qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -nomake examples -nomake demos -nomake tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups

-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info -xplatform

qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb -confirm-license

-qt-mouse-tslib -I/home/duancp/mytslib/include

-L/home/duancp/mytslib/lib 上面的红色部分必须让找前面的tslib的目录设置,否则会出现“The tslib

functionality test failed!”错误

./make make install

cd example/qws/mousecalibtration

qmake &&make (生成mousecalibtration可执行文件,后面需要将其拷贝

到根文件中)

(这一步实现时有问题,可能是环境变量没设置好)

4.制作根文件

我的工作目录是在根文件下,首先将root_default.tgz拷贝到根目录下,加

压,生成root_default

cd /root/root_default

mkdir tslib cd tslib

为了方便,将编译的tslib下的bin、etc、lib文件夹全部拷贝过来 (拷贝tslib

支持库,我自己的理解了)

cp -a /home/duancp/mytslib/lib ./ cp -a /home/duancp/mytslib/bin ./ cp -a /home/duancp/mytslib/etc ./

cd etc

vi ts.conf (据说是ts.conf的大小有限制,所以必须裁剪,是具体情况而裁剪) 将里面的第二条语句(#module_raw inout)前面的“#”去掉,否则后面触摸屏将

不能使用

cd ..

mkdir mini2440 (这里将mini2440作为了qpe目录,实现GUI程序)

cd mini2440

因为我的flash有64M,为了方便,将QT4.4.3的lib文件夹全部拷贝过来,但是要删除fonts内除了wenquanyi_120_50.qpf 之外的其他文件,否则太大

cp -a /mini2440/lib ./

rm -rf fonts mkdir fonts

cp -a /mini2440/lib/fonts/wenquanyi_120_50.qpf fonts

将前面编译的QT的触摸屏自带程序拷贝过来

cp -a /*/example/qws/mousecalibtration/mousecalibtration ./

cd /root

解压mkyaffsimage.tgz,得到mkyaffsimage可执行文件

./mkyaffsimage root_default root.yaff2 得到根文件root.yaff2,如果要看一下大小,可以执行

ll root.yaff2 -h

这样可以将root.yaff2烧到板子上去了。

在板子上运行mousecalibtration的时候没有出现什么错误,可以正确的显示

输入的汉字 目前在板子上运行的时候存在一定的问题:进入tslib运行ts_calibrate,总是提示ts_open: No such file or directory,这个问题一直没有解决,留在后面解

决。

在板子上运行的时候环境变量如下: (设置环境变量) export QTDIR=/mini2440

export LD_LIBRARY_PATH=$QTDIR/lib:$OPIEDIR/lib

export PATH=$QTDIR/lib:$OPIEDIR/bin:$PATH export QWS_MOUSE_PROTO=tslib:/dev/input/event0

export TSLIB_ROOT=/tslib

export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_CONFFILE=/tslib/etc/ts.conf

export TSLIB_FBDEVICE='/dev/fb0'

export QWS_KEYBOARD='LIRC:/dev/lircd' 将上面的配置写成个脚本文件,开机时在初始化中开启就行了。 或者直接写到/etc/profile 里面就可以实现开机启动设置变量了。 要是在板子上运行的时候提示缺少某些文件的时候,就去在PC机上的linux下寻找,需要主要的是看若是提示缺少的文件是以个链接文件时,需要把链接对

象也拷入 我在运行的时候缺少一个librt.so.1(具体记不得了,好像是这个)的文件,我的办法是把/usr/local/arm/3.4.1/arm-linux/lib下的该文件和其链接对象拷贝过

来放在板子里的lib中,就ok了!

QTE4.5.2 移植成功,但群创7寸屏无响应 (已解决)

已解决

我这几天移植qt-embedded-linux-opensource-src-4.5.2

因为之前使用友善的 arm-linux-gcc-4.3.2编译qt-embedded-linux-opensource-src-4.5.2 没有错误,但是运行

例子程序example/widget/analogclock/analogclock -qws & 就会出段错误, 所有改用 openmoko的arm-linux-gcc-4.1.2编译, 最后可以成功看到界面。

移植的tslib1.4 在,并且运行ts_calibrate 五点校准,触摸屏是有反应的,并能生成/etc/pointercal

ts_test 也是好使的,拖拽都没有问题。

但是就是运行移植的 QTE的程序 触摸屏一点反应也没有。

顺便说一下,内核还是用的mini2440出厂时nand里的linux-2.6.29,没有动过,触摸屏已经是被内核支持了。

这是我配置的环境变量: 以下环境变量都是我在终端敲入的

export QTDIR=/usr/local/QtEmbedded-4.5.2-moko-arm export QPEDIR=/usr/local/QtEmbedded-4.5.2-moko-arm export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH

export TSLIB_ROOT=/usr/local/tslib export TSLIB_TSDEVICE=/dev/event0

export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts export TSLIB_CONSOLEDEVICE=none

export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf export POINTERCAL_FILE=/etc/pointercal export TSLIB_CALIBFILE=/etc/pointercal export QWS_MOUSE_PROTO=Tslib:/dev/event

这是我安装tslib1.4的步骤:

一、tslib移植

第一步:解压tslib-1.4.tar.gz

tar -zxvf tslib-1.4.tar.gz

第二步:进入解压过的目录

cd tslib-1.4

第三步:执行tslib-1.4目录下的autogen.sh

./autogen.sh

第四步:执行autogen.sh脚本所生成的Makefile文件 在命令行打入以下命令:

echo \>$ARCH-linux.cache

./configure --host=arm-linux --prefix=/usr/local/tslib --cache-file=$ARCH-linux.cache

第五步: make make install

第六步:把指定安装目录下的tslib的文件都copy到你所挂载的根文件下

sudo cp -a /home/linux/tslib/* /opt/FriendlyARM/mini2440/root_qtopia/usr/local/tslib/

第七步:修改/opt/FriendlyARM/mini2440/root_qtopia/usr/local/tslib/ 下的etc目录中ts.conf文件

vi ts.conf 将第二行的#module_raw input修改成module_raw input 注意一定要顶格写否则程序执行时会发生读取ts.conf错误

接下来是我的QTE配置: 解压源码包:

tar xzvf qt-embedded-linux-opensource-src-4.5.2.tar.gz 改名:

mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-moko-arm

cd qt-embedded-linux-opensource-src-4.5.2-moko-arm vim mkspecs/qws/arm-linux-g++/qmake.conf 在最后两行加入:

QMAKE_INCDIR = /usr/local/tslib/include QMAKE_LIBDIR = /usr/local/tslib/lib保存退出。

退到qt-embedded-linux-opensource-src-4.5.2-moko-arm目录下,然后执行以下命令:

./configure -prefix /usr/local/QtEmbedded-4.5.2-moko-arm -release -shared -fast -pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb -confirm-license -no-armfpa -no-feature-QWS_CURSOR -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib

已解决!原因是忘记加上面的两句了

然后make make install

触摸屏好使了

把/usr/local/QtEmbedded-4.5.2-moko-arm 拷贝到/opt/FriendlyARM/mini2440/root_qtopia/usr/local/QtEmbedded-4.5.2-moko-arm

因为我用的是nsf网络挂在,所有不怕文件多。

我刚开始移植时也碰到了这种问题,网上搜了很多,好像是说在板子里运行程序时,启动时没找到相应的字体,删除一些其它字体就好了,我删除字体后(在 your QTDIR/lib/fonts/下),只剩下unifont_* 和wenquanyi_*, 运行程序的命令是 ./your programe -qws -fn wenquanyi .。这样运行起来的程序字体是正常的,但后来发现一个问题,就是因为我把其它字体都删除了,在一些程序中我想设置其他字体就做不了了,所以感觉这不是真正解决问题的方法,希望有高人指点一下

先用矢量字体调试,然后再转换为pcf字库,关键还是看需求,如果不是用特别大的字号而且板上flash空间较大的话,直接用ttf字库就可以,网上搜搜文泉驿

至于显示中文就更简单了,需要用到QTextCodec这个类

移植QT4.5 Segmentation Fault报错解决方法和字体偏小的办法

我想大多数人都跟我一样直接用友善提供的arm-linu-gcc 4.3.2的版本来编译QT程序,所以遇到这个错误是必然的。

这个错误的原因主要是因为程序在编写的时候,指针的处理不当,而出现在移植QT身上,是因为交叉编译器,优化过度了,因此有两个解决办法。

办法1:安装 eabi的,版本为4.1.2 的交叉编译器

详细可以参考http://www.qtcn.org/bbs/read.php?tid=22059

办法2:取消,交叉编译器的优化选项,去掉Makefile 的 -O2选项,不过程序会变得稍微大了,本人采用方法2,暂时没遇到什么特殊情况。

PS:对于QT4.5.1的移植字体,可能偏小,这是由于字体库的原因,QT本身不带汉字的字库,所以只能选择一个稍微好看的字库,在执行的时候,可以输入 ./hello -qws -fn SIMHEI &

本文来源:https://www.bwwdw.com/article/koer.html

Top