QT4.7.4移植到DevKit8000开发板

来源:互联网 发布:mac little snitch 编辑:程序博客网 时间:2024/05/23 21:34

QT4.7在devkit8000上的移植
         --阿呆-http://blog.csdn.net/longer44(欢迎转载,但做人要厚道,这行表去哦)


经过将近半个月的崩溃时光,qt4小妹妹终于掀去了她那羞答答的面纱。

记录一下编译过程,这几天几乎被她折腾疯了。

刚开始是参考天漠公司网上放出来的移植过程的,但总也不能成功:
这是他写的编译安装过程:(正确的说这是官方移植的一个变种,但基本内容差不多的)
1. 主机:      ubuntu 9.10
2. 平台:        devkit8000(omap3530)
3. tslib-1.4
4. QT版本:      qtopia-core-opensource-src-4.3.5
5. 交叉编译工具:  arm-none-linux-gnueabi-2007q3

二: 移植tslib
1.
tar xzvf tslib-1.4.tar.gz
cd tslib/
export CC=arm-none-linux-gnueabi-gcc
export CXX=arm-none-linux-gnueabi-g++
2.
./autogen.sh
执行这条命令可能会报错,需要安装以下工具:
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
3.
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-none-linux-gnueabi.cache

./configure --host=arm-none-linux-gnueabi --cache-file=arm-none-linux-gnueabi.cache --enable-inputapi=no PLUGIN_DIR=/home/zhaopan/tslib/plugins -prefix=/home/zhaopan/tslib/build -host=arm-none-linux-gnueabi --cache-file=arm-none-linux-gnueabi.cache 2>&1 | tee conf_log
4.
make 2>&1 | tee make_log
make install
5. 
将/home/zhaopan/tslib/build/lib下除去pkgconfig目录外其他所有文件拷贝到开发板/lib目录下
6.
将/home/zhaopan/tslib/build/etc下的ts.conf拷贝到开发板的/etc下

7. 设置环境变量,在开发板文件系统的/etc/profile文件里添加以下命令:

export TSLIB_TSDEVICE=/dev/input/touchscreen0
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

三: 移植QT
1. 准备
tar xvf qtopia-core-opensource-src-4.3.5.tar.gz
cd qtopia-core-opensource-src-4.3.5

修改mkspecs/qws/linux-arm-g++/qmake.conf文件,替换所有arm-linux为arm-none-linux-gnueabi
2. 配置
./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,16,32 -no-qt3support -prefix ${HOME}/work/qt/target -fast -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -optimized-qmake -no-nis -no-separate-debug-info -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -qt-kbd-usb -no-kbd-qvfb -no-mouse-qvfb -no-mouse-linuxtp -qt-mouse-pc -qt-mouse-tslib -I /home/zhaopan/tslib/build/include -L /home/zhaopan/tslib/build/lib

其中/home/zhaopan/tslib/build/include是tslib的include目录,/home/zhaopan/tslib /build/lib是tslib的lib目录,配置完成后会提示successful,如果没有,google出错信息,将其解决掉,直到 successful才继续往下做
3. 编译 安装
make
(漫长的等待)
make install

/////////////////////////官方移植信息结束//////////////////////////////

阿呆在网上没有找到qtopia-core-opensource-src-4.3.5,但是有qtopia-core-opensource-src-4.3.3.应该是没有问题的,于是乎开干了。但是相信阿呆,按照上面的步骤是编译不成功。

阿呆来把自己在ubuntu10下,

使用宿主机gcc4.4.3,

交叉工具链:arm-2007q3

成功编译安装qt-everywhere-opensource-src-4.7.4.tar.gz的过程写一下吧。
(顺序最好一步不差,尤其是新手,阿呆可是吃过不少苦头,想自由,可以,等自己成为神了再说)

触摸屏库也是tslib-1.4
之所以选择qt-everywhere-opensource-src-4.7.4.tar.gz是因为这个包是当前可以从诺基亚官网下载到的,而不是已经不再提供下载的包,不然,阿呆说了半天,谁需要源码包了,但是下载不到,那真是令人抓狂的事情。

好废话不说,我们开始了:(大部分步骤是从上面copy过来的,但有一些不是,需要注意一下区别,体会一下为什么这样,阿呆刚开始就被这些区别整的晕头转向的,虽然修改很少,但是很关键)

一)talib-1.4移植
1.
tar xzvf tslib-1.4.tar.gz
cd tslib/
export CC=arm-none-linux-gnueabi-gcc  (前提是你已经安装好交叉工具链)
export CXX=arm-none-linux-gnueabi-g++  (这里使用他编译tslib包)
2.
./autogen.sh
执行这条命令可能会报错,需要安装以下工具:
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
3.
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-none-linux-gnueabi.cache

./configure --host=arm-none-linux-gnueabi --cache-file=arm-none-linux-gnueabi.cache --enable-inputapi=no PLUGIN_DIR=/home/adai/embest/work/qt474/tslib/plugins -prefix=/home/adai/embest/work/qt474/tslib -host=arm-none-linux-gnueabi --cache-file=arm-none-linux-gnueabi.cache 2>&1 | tee conf_log

(“PLUGIN_DIR=”和“-prefix=”后面的路径可以自己设置,但是需要保证这个路径在后面配置qt4.7时相对应)
4.
make 2>&1 | tee make_log
make install
(tslib的编译安装一般出不了什么问题的)

5. 
将/home/adai/embest/work/qt474/tslib/lib下除去pkgconfig目录外其他所有文件拷贝到开发板/lib目录下
6.
将/home/adai/embest/work/qt474/tslib/etc下的ts.conf拷贝到开发板的/etc下

7. 设置环境变量,在开发板文件系统的/etc/profile文件里添加以下命令:

export TSLIB_TSDEVICE=/dev/input/touchscreen0
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

8.最后,将/etc下的ts.conf中的
# Uncomment if you wish to use the linux input layer event interface
#module_raw input
前面的井号去掉,一定注意。去掉后要顶格,就是m前不要有空格,不然会报错的。

OK,享受吧
ts_calibrate 进行校验
ts_test      进行测试

(本移植仅限于timll给的板子和rootfs上面,其他板子上没有试过的,所以平台不一样最好不要照抄,参考可以)

二)qt-everywhere-opensource-src-4.7.4.tar.gz编译安装
1. 准备
tar xvf qt-everywhere-opensource-src-4.7.4.tar.gz
cd qt-everywhere-opensource-src-4.7.4.tar.gz
(注意:这里我们没有修改arm-linux为arm-none-linux-gnueabi,因为qt4.7里面提供对后者的支持了,我们只需要在配置的时候使用-xplatform qws/linux-arm-gnueabi-g++就可以了)
2. 配置
(在配置之前,我们需要更改一下CC和CXX环境变量,前面编译tslib用的是arm-none-linux-gnueabi-gcc,现在我们编译X86上的文件,需要将CC和CXX更改为宿主机上的gcc,不然配置的时候会提示什么语法错误阿,错误二进制格式阿之类的,哥们当时可是迷茫了很长时间,明明就是按照说明来得,结果就是不能通过,网络资源使用慎重点阿,具体如下:
export CC=gcc
export CXX=g++)

./configure -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -depths 4,8,16,32 -no-qt3support -prefix ${HOME}/embest/work/qt474/target -fast -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -optimized-qmake -no-nis -no-separate-debug-info -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -qt-kbd-tty -no-kbd-qvfb -no-mouse-qvfb -no-mouse-linuxtp -qt-mouse-pc -qt-mouse-tslib -I /home/adai/embest/work/qt474/tslib/include -L /home/adai/embest/work/qt474/tslib/lib

配置一般不会需要太长时间,可以用以上方式配置,也可以写一个bash的脚本文件,这样就不用每次都输入一长串配置参数了,阿呆写了一个配置文件,名为:myconfig.arm.sh,大家可以根据需要修改配置,而且阿呆推荐使用这种方式,好记性不如烂笔头,这种方式有利于以后添加或者裁减配置信息
(配置的过程是现根据当前qmake源码编译可在X86上运行的qmake执行程序,然后利用qmake执行程序和配置参数为qt4.7源代码生成Makefile文件)

配置完成后,会提示可以make了

但是在这之前我们需要对mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf文件里面做一些修改:
# modifications to g++.conf
QMAKE_CC                = arm-none-linux-gnueabi-gcc -lts
QMAKE_CXX               = arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK              = arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++ -lts

(就是在每行后面添上-lts,这个可以防止在链接tslib库时候出错,具体原因不祥呢。知道了再补上吧。根据网上的资料说如果不编译demos和examples则不用这一步更改)

3.
然后就可以编译了
make && make install (哥们用了3个多小时,编译了例子了。。。)

祝你成功

4.
下载
安装完成后,下面的步骤就是将QT474库文件放到开发板上,并作相应配置,这一部分基本就是抄的天漠官方的步骤:
1) 拷贝${HOME}/embest/work/qt474/target下整个lib目录到开发板下/opt/qt474目录下

2) 删掉/opt/qt474/lib/fonts目录下多余的字体文件,只留下cour.pfa和cursor.pfa两个文件

3) 设置环境变量,在开发板文件系统的/etc/profile文件里添加以下命令:

export QTDIR=/opt/qt474
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$PATH
export QWS_MOUSE_PROTO=tslib:/dev/input/touchscreen0
export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
export QT_QWS_FONTDIR=/opt/qt474/lib/fonts

5.
测试
默认的配置选项是编译例子了的额,目的是移植后可以方便的进行移植测试
将$(HOME)/embest/work/qt474/target/examples/tutorials/addressbook/part1文件夹拷贝到开发板上,位置随你定了(阿呆是在SD卡里面直接运行的,实践表明可以这样做),然后进入part1文件夹运行part1程序:
./part1 -qws
将会看到一个你熟悉的窗口界面,是什么呢?阿呆看到了,你呢,期待ing

(可能运行时会提示找不到库文件等,阿呆找不到libstdc++.so.6,解决办法是在宿主机上搜索该文件并将之复制到开发板/usr/lib目录下。可能你会搜索到很多个同名文件,阿呆选取的是工具链下面的那个,还有就是该文件可能是个软链接,记住把链接的文件也复制过去。阿呆的做法是复制其指向的文件,在开发板上创建软链接,可能都已样吧)


QT474的移植过程至此结束 GAME OVER

“大刀向鬼子们的头砍去。。。”---高兴啊

上张图片:

 

后记:阿呆先是在网上搜索到的天漠的移植指南,但是尝试了四五天,连配置都没有通过,不怪他们写的不明白,只怪自己知识积累不够,很多基本概念不明白。然后从网上尝试了其他的移植过程介绍,均未成功。后来经过网友小何同志的介绍,说一起玩qt4,于是乎在诺基亚官网下载了qt4的库,从小何同志那索取了一个6410的qt4的移植文档。开始了漫长的,崩溃。。。再崩溃的移植之旅。阿呆遇到过的一些问题根据阿呆的理解放到这了,结合其他网络资源,祝客官顺利移植qt4到自己的板子上(上述过程仅限devkit8000哦(2011/10的光盘资料))

附:配置文件内容:

#!/bin/bash

echo yes | ./configure \
-embedded arm \
-xplatform qws/linux-arm-gnueabi-g++ \
-opensource \
-little-endian \
-host-little-endian \
-depths 4,8,16,32 \
-no-qt3support \
-prefix /home/adai/embest/work/qt474/target \
-fast \
-qt-sql-sqlite \
-no-libtiff \
-no-libmng \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-optimized-qmake \
-no-nis \
-no-separate-debug-info \
-no-qvfb \
-qt-gfx-linuxfb \
-qt-kbd-tty \
-no-mouse-qvfb \
-no-mouse-linuxtp \
-qt-mouse-pc \
-qt-mouse-tslib \
-I/home/adai/embest/work/qt474/tslib/include \
-L/home/adai/embest/work/qt474/tslib/lib

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2岁宝宝吃饭不嚼怎么办 2岁宝宝挑食厌食怎么办 孩子不爱和家长交流怎么办 孩子发烧在医院查不出病因怎么办 宝宝乳牙长歪了怎么办 两岁宝宝不爱吃水果怎么办 两岁宝宝不吃水果怎么办 一岁的宝宝上火了怎么办 吃水果嘴唇肿了怎么办 二岁宝宝不爱吃饭怎么办 小婴儿便秘但不爱喝水怎么办 宝宝只吃水果不吃饭怎么办 一岁宝宝不喜欢吃水果怎么办 1岁宝宝不吃水果怎么办 一岁半宝宝吃水果拉肚子怎么办 大人发烧了怎么办如何退烧 怀孕后不爱吃水果怎么办 不敢吃水果了怕虫怎么办 宝宝发烧38度不出汗怎么办 1岁宝宝喜欢含饭怎么办 3岁宝宝喜欢含饭怎么办 孩子咳嗽发烧怎么办最有效 孩子咳嗽打哈切流鼻涕发烧怎么办 孩子香蕉吃多了怎么办 80多岁老人发烧怎么办 小孩香蕉吃多了怎么办 7个月宝宝缺钙怎么办 宝宝脖子被汗淹到红了脱皮怎么办? 小儿出汗多咳嗽怎么办吃什么 牛高烧不退怎么办最好 猪体温低不吃食怎么办 小孩发烧咳嗽怎么办吃什么药 大晚上发烧39度怎么办 胃受凉了老打嗝怎么办 大人发低烧怎么办如何退烧 吃了退热药不退热怎么办 猪持续高烧不退怎么办 猪感冒了不吃食怎么办 6岁儿童发烧38度怎么办 5岁儿童发烧38度怎么办 7岁儿童发烧38度怎么办