QT4.7.4移植到DevKit8000开发板

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值