qt-creator在嵌入式的移植方法
更新时间:2024-03-30 18:13:01 阅读量: 综合文库 文档下载
- qt creator推荐度:
- 相关推荐
浪费了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 &
正在阅读:
qt-creator在嵌入式的移植方法03-30
5分钟的岗位竞聘演讲稿-最新范文04-27
煤矿空间信息系统CGIS操作手册05-29
国家税务局关于进一步对外开放的边境、沿海和内陆省会城市、沿江05-07
《大豆清洁生产提取功能因子产品项目可研报告》(86页)(word版)05-01
中职教育论文12-10
2019届高三生物二轮复习大题优练5含解析新人教版 9 704-27
职工篮球比赛闭幕式致辞04-30
2012二建法规点题06-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 移植
- 嵌入式
- creator
- 方法
- qt
- 2018年国家四川公务员考试行测试题:逻辑推理(8.21)
- 煤矿井下三大保护知识培训
- SAT 分类词汇填空categorical vocabulary
- 17年3月份安全生产领导小组例会记录
- 004第四编 侵权责任法
- 中国邮政储蓄银行规章制度管理办法
- 2005年4月浙江省自考当代中国政治制度试题答案
- 第六章 圆轴扭转练习带答案
- 周杰伦介绍和歌曲介绍
- 第四章现金流量与资金时间价值模拟试题1
- 公司和公司法概述
- 影视鉴赏 名词解释 简答题
- 江苏省2012年普通高校对口单招文化统考纺织服装专业综合理论试卷
- 《计算机应用基础》形考任务参考答案
- 实习月记
- (人民版)文化史 专题七 近代以来科学技术的辉煌教学案
- 着力促进中小企业落户的调研报告
- 美术鉴赏完善版 - 图文
- 2019年师资建设工作计划范文
- 我是猫教学设计(共8篇)