「linux」dm6446下Qt4.5.2移植笔记

来源:互联网 发布:vb中的循环语句 编辑:程序博客网 时间:2024/05/15 08:41
QT 源码下载
官方下载地址:http://qt.nokia.com/downloads
ftp的归档下载地址,这里有各种版本的源码下载:
ftp://ftp.qt.nokia.com/qt/source/


Qt版本:qt-everywhere-opensource-src-4.5.2
主板:Davinci 6446
主机系统:ubuntu 12.10
交叉编译器:arm_v5t_le-(MontaVista提供两个版本交叉编译器,根据系统选择4.2.0或3.4.3,本文档以4.2.0为例)

设置环境变量PATH:
打开文件  #vim /etc/bash.bashrc
在最后加一句 PATH=/*/v5t_le/bin::$PATH
使变量生效  #source /etc/profile

安装触摸屏校验工具:
把tslib-1.4.tar.gz放到/opt目录下
tar zxvf tslib-1.4.tar.gz -C /opt/

安装库:
apt-get install libtool
apt-get install autoconf
apt-get install automake
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
事件: 今软件包有更新,进入更新管理器,点击安装更新,出现错误。
错误提示:
E: 无法获得锁 /var/cache/apt/archives/lock - open (11 资源临时不可用) 
E: 无法对下载目录加锁
解决步骤:
获得第一个方案,打开终端,输入: ps -aux ,列出进程,形式如root      5765  0.0  1.0  18204 15504 ?        SN   04:02   0:00 apt-get -qq -d 最后一列以apt-get 开头,这个进程正得到锁,在终端输入:sudo kill PID,释放锁。但我的列表中没有此类进程。
第二个方案,强制解锁,命令:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock 问题解决。

--------------------------------------------------------------------------

进入tslib文件夹执行
#./autogen.sh (生成configure)
如果你就一个交差编译工具链在环境变量中,可以这样编译:
#./configure --prefix=/opt/Qt/tslib/(存放最终编译的文件,自行设置) --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
如果有多个交差编译工具链的话,建议如下方法:
#CC=arm_v5t_le-gcc CXX=arm_v5t_le-g++(先指明工具链) 
./configure --host=arm_v5t_le --prefix=/usr/local/tslib/(最好指定非tslib安装目录) ac_cv_func_malloc_0_nonnull=yes
#make
#make install
安装成功后,tslib会安装在tslib目录中,如果想指定安装目录,在prefix参数后修改安装目录即可。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
错误提示:
在执行"./configure --host= arm_v5t_le ... "生成Makefile过程中,出现:
checking host system type ....invalid configuration 'arm-vet_le': machine 'arm_v5t_le' not recognized
解决方法
修改config.sub文件,262行,把arm_v5t_le加上。 
如:| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | arm_v5t_le /

--------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
错误提示:
root@dt-laptop:/home/arm/tslib# make install
Making install in etc
make[1]: 正在进入目录 `/home/arm/tslib/etc'
make[2]: 正在进入目录 `/home/arm/tslib/etc'
test -z "/home/arm/tslib/etc" || /bin/mkdir -p "/home/arm/tslib/etc"
/usr/bin/install -c -m 644 'ts.conf' '/home/arm/tslib/etc/ts.conf'
/usr/bin/install: “ts.conf” 和 “/home/arm/tslib/etc/ts.conf” 为同一文件
make[2]: *** [install-sysconfDATA] 错误 1
make[2]:正在离开目录 `/home/arm/tslib/etc'
make[1]: *** [install-am] 错误 2
make[1]:正在离开目录 `/home/arm/tslib/etc'
make: *** [install-recursive] 错误 1
解决方法:
安装目录出了问题,在配置的时候将--prefix=新的TSLIB安装文件目录了,这样安装的时候就要覆盖目录,权限不够或者不允许,应该是给出另外一个目录就可以了

--------------------------------------------------------------------------

配置编译Qtembedded:进入到qt-everywhere-opensource-src-4.5.2目录,首先也是最重要的一点,进入到mkspecs/qws/linux-arm-g++/目录,打开命名为qmake.conf的文件,在里面配置交叉工具链的选择,将所有的arm-linux-改为arm_v5t_le-就可以指定成达芬奇平台的交叉工具链。然后进行如下配置:./configure --prefix=/usr/local/qt_for_arm(存放最终编译的文件,自行设置) -release -shared -fast -pch(在3.4.3中去掉此项) -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-xshape -no-separate-debug-info -qt-gfx-linuxfb(3.4.3中使用) -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -confirm-license -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib(生成的tslib的路径) 
具体参数的含义可通过./configure --help来参看。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
错误提示:
          make: g++:命令未找到
          make: *** [project.o] 错误 127
解决方法:
          安装g++ 
          apt-get install g++

--------------------------------------------------------------------------

编译Qtembedded:
配置完毕后,就可以编译Qte4,按照如下步骤:
#make
编译时间长短视编译机器的性能和配置参数决定,但编译完成后,就可以得到需要的Qte4库文件。


移植Qtembedded:
编译完成后,为了便于日后的开发,应该在PC上安装Qte4,这样就获得了Qte4的qmake工具和相
关文档。安装命令如下:
#make install
开发板上要运行Qt4的程序,就应该有相对应的库文件,移植的过程就是把已经交叉编译好的库文件移至到开发板上。开发板可以使用NFS共享根文件系统启动,因此,可以先将库文件拷贝到共享的根文件系统下进行测试。当测试完成后,再将库文件拷贝到开发板上。


移植库文件:
按照步骤,首先把Qte4的库文件拷贝到NFS启动的根文件系统,其步骤如下:
#cp –f lib/ rootfs/usr/local/qt_for_arm
之所以放入该目录中,是因为这是Qte的默认安装目录,这样可以避免因为路径的不同而产生不必要的问题。


设置环境变量:
将根文件拷贝到指定位置后,为了使系统能在运行时获取Qte4库文件位置,应该设置系统的环境变量,配置的环境变量如下:
export QTEDIR=/usr/local/qt_for_arm
export PATH=/usr/local/qt_for_arm/bin:$PATH
export QWS_DISPLAY=LinuxFb:/dev/fb3
export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight100:0"
export QWS_SIZE=800×600
export LD_LIBRARY_PATH=/usr/local/qt_for_arm/lib:$LD_LIBRARY_PATH

第一个参数指定了Qte所在的目录,第二个参数是将Qte所在目录导入环境变量,第三个及第四个参数指定了Qte的绘制设备,第五个参数是将Qte的库文件目录导入环境变量。


#export set QT_QWS_FONTDIR=$QTEDIR/lib/fonts/

###############################################################

要在pc上跑Qt demo,则直接安装:
apt-get install qtcreator
通过以下方式编译demo后,直接执行即可:
qmake -project
qmake 
make
在板上执行,则需使用Qt源码中编译产生的qmake来编译demo,方法同上,执行时加后缀-qws。