• 35946阅读
  • 24回复

qt4.5.3移植全过程 [复制链接]

上一主题 下一主题
离线weitaotao110
 

只看楼主 倒序阅读 楼主  发表于: 2009-10-14
— 本帖被 XChinux 设置为精华(2009-10-14) —
1.安装交叉编译环境

a..下载arm-linux-gcc-3.4.1.tar.bz2(建议用的这个版本的,有些低版本的交叉编译工具在编译时会出错)
arm-linux-gcc-3.4.1.tar.bz2 的下载地址如下:
http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

b.解压 arm-linux-gcc-3.4.1.tar.bz2
  #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2
  解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹,进入该文件夹,将arm文件夹拷贝到/usr/local/下
  # cd usr/local/
  #cp -rv arm /usr/local/
  现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了

c. 修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,这里只写一种)
# vi ~/.bashrc
在最后加上:
export PATH=$PATH:/usr/local/arm/3.4.1/bin

d. 立即使新的环境变量生效,不用重启电脑
#source ~/.bashrc

e.检查是否将路径加入到PATH:
   # echo $PATH
  显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。

f.测试是否安装成功
# arm-linux-gcc -v
上面的命令会显示arm-linux-gcc信息和版本,这是我显示的信息:
 Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
 Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc- 3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu

 --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm

 -linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable

 -nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable- languages=c,c++ --enable-shared --enable-c99 --enable-long-long
 Thread model: posix
 gcc version 3.4.1
到这里就成功安装好了交叉编译环境

2.安装qt-x11

进入下载页面:选择Download Qt libraries 4.5 for Linux/X11(120 Mb)
# aptitude install libxtst-dev
# tar -zxvf qt-x11-opensource-src-4.5.3.tar.gz
# cd qt-x11-opensource-src-4.5.3
# ./configure
# make
# make install
qt-x11 被安装到此目录下/usr/local/Trolltech/Qt-4.5.3
编译qvfb:
# cd qt-x11-opensource-src-4.5.3/tools/qvfb
# make
至此,qt-x11安装完毕完毕

3.安装qt-embedded

选择支持arm的体系结构
# tar -zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz
# cd qt-embedded-linux-opensource-src-4.5.3
#./configure -embedded arm -xplatform qws/linux-arm-g++ -no-qt3support -qt-mouse-linuxtp(我自己的设置,你可以通过查看./configure -help来设置)
#make
#make install
qt-embeded 被安装在这个目录下/usr/local/Trolltech/QtEmbedded-4.5.3-arm 或者是/usr/local/Trolltech/QtEmbedded-4.5.3-generic
一般在/usr/local/Trolltech/QtEmbedded-4.5.3-arm
这里你可以新建一个set-env.sh文件
把下面复制到文件中
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin:$PATH
exportLD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib:$LD_LIBRARY_PATH
每次用的时候进行设置
#. set-env.sh 或者是 source set-env.sh

安装qt-embed请参考我的这个帖子:http://www.qtcn.org/bbs/read.php?tid=22600

4.移植到开发板

下面通过NFS方式来测试是否成功(你必须提前配置好nfs)
先准备好2个nfs目录,取名为nftsroot
一个是用来备用的,取名为fonts

a.准备库和字体
#cp -a /usr/local/Trolltect/QtEmbedded-4.5.3-arm/lib /nfsroot
然后在usr/local/Trolltect/QtEmbedded-4.5.3-arm 里面收索到这些库
librt.so,librt.so.1,libstdc++.so,libstdc++.so.6,libstdc++.so.6.0.1
笔者就是在运行时就提示要这些库,所有大家还是先准备好来,然后复制到/nfsroot/lib里
#ls /nfsroot/lib
fonts libQtScript.prl libQtSvg.so.4.5.3
libgcc_s.so libQtScript.so libQtTest.la
libgcc_s.so.1 libQtScript.so.4 libQtTest.prl
libQtCore.la libQtScript.so.4.5 libQtTest.so
libQtCore.prl libQtScript.so.4.5.3 libQtTest.so.4
libQtCore.so libQtScriptTools.la libQtTest.so.4.5
libQtCore.so.4 libQtScriptTools.prl libQtTest.so.4.5.3
libQtCore.so.4.5 libQtScriptTools.so libQtXml.la
libQtCore.so.4.5.3 libQtScriptTools.so.4 libQtXml.prl
libQtGui.la libQtScriptTools.so.4.5 libQtXml.so
libQtGui.prl libQtScriptTools.so.4.5.3 libQtXml.so.4
libQtGui.so libQtSql.la libQtXml.so.4.5
libQtGui.so.4 libQtSql.prl libQtXml.so.4.5.3
libQtGui.so.4.5 libQtSql.so librt-2.3.2.so
libQtGui.so.4.5.3 libQtSql.so.4 librt.so
libQtNetwork.la libQtSql.so.4.5 librt.so.1
libQtNetwork.prl libQtSql.so.4.5.3 libstdc++.so
libQtNetwork.so libQtSvg.la libstdc++.so.6
libQtNetwork.so.4 libQtSvg.prl libstdc++.so.6.0.1
libQtNetwork.so.4.5 libQtSvg.so pkgconfig
libQtNetwork.so.4.5.3 libQtSvg.so.4
libQtScript.la libQtSvg.so.4.5
当然这些库文件不是每个都需要,用户可以根据自己的应用来选择

接下来将开发板和主机通过网线连接起来,并在开发板里进行mount
#mount -t nfs 192.168.0.10:/nfsroot /mnt -o nolock
#ls /mnt
lib
接下来事字体(在lib目录的fonts),字体比较麻烦,
根据文档说明,Qtopia默认查找字体的目录是/usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts
我们有两种方式来挂载字体库。
第一种:

#mount -t ramfs ramfs /usr
#cd /usr
#mkdir local && mkdir local/Trolltech
#ln -s /mnt local/Trolltech/QtEmbedded-4.5.3-arm
#ls /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts
这样我们就配置好了。

如果上一种方法不行,看下面这种,一定可以!

第二种:

首先用到刚才的备用的nfs目录 fonts(看名字就晓得用来挂载字体库的)
#cp -arf /usr/local/Trolltect/QtEmbedded-4.5.3-arm/lib/fonts /fonts
在开发板里
#mkdir /usr/local && mkidr /usr/local/Trolltech &&mkdir /usr/local/Trolltech/QtEmbedded-4.5.3-arm  &&/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib
#mount -t nfs 192.168.0.10:/fonts /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib  -o nolock
这样就把字体库链接到 /usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts目录来了

第二种方法是我同学想出来的,很不错吧,
他的博客是:http://hi.baidu.com/armlinuxhouse/blog/item/c2fb91ca42b0811d7f3e6f10.html

里面有很多好的文章!

4.交叉编译Hello World 程序
首先写一个hello.cpp的程序
#qmake -project
#qmake
得到一个hello的arm可执行程序(通过file命令来查看它所属的cpu)
并将该
#cp hello /nfsroot

然后在超级终端里运行
#export LD_LIBRARY_PATH=/mnt/lib:$LD_LIBRARY_PATH
#cd /mnt
#./hello -qws

这样就能看到你的运行程序了!
enjoy!
[ 此帖被weitaotao110在2010-04-10 14:37重新编辑 ]
My blog: www.hacktao.com
走好每一天!
离线dhlgclh

只看该作者 1楼 发表于: 2009-10-23
谢谢共享
离线lcong
只看该作者 2楼 发表于: 2009-11-13
QtEmbedded-4.5.3-arm与qtopia-opensource-src????
离线jilong17
只看该作者 3楼 发表于: 2009-12-12
安装qt-x11    的时候 运行 make 命令出现

/usr/include/openssl/kssl.h:72:18: krb5.h: 没有那个文件或目录

gmake[1]: *** [.obj/release-shared/qsslcertificate.o] Error 1
gmake[1]: Leaving directory `/opt/EmbedSky/qt-x11-opensource-src-4.5.3/src/network'
gmake: *** [sub-network-make_default-ordered] Error 2

我下载的包就是在论坛首页的120M 的包
离线hai654321
只看该作者 4楼 发表于: 2009-12-17
对这篇文章我持有很大的怀疑态度,本人也用3.4.1交叉编译器编译4.5以上的QTE均未成功,用4..x.x以上的编译器就ok,不知道楼主是怎么成功的
离线yyy200819
只看该作者 5楼 发表于: 2010-01-14
楼主这样移植的qte用的效果怎么样阿?
努力,加油!
离线yyy200819
只看该作者 6楼 发表于: 2010-01-14
引用第4楼hai654321于2009-12-17 09:46发表的  :
对这篇文章我持有很大的怀疑态度,本人也用3.4.1交叉编译器编译4.5以上的QTE均未成功,用4..x.x以上的编译器就ok,不知道楼主是怎么成功的

用3.4.1交叉编译器编译4.5以上的QTE是可以的,我已经实验了很多次。
努力,加油!
离线yyy200819
只看该作者 7楼 发表于: 2010-01-14
你好,我按照你的方法移植了qte4.5.3,可是在开发板上运行的时候不支持触摸屏,点击之后会消失运行的界面,而回到之前板子自带的系统界面,YC2440开发板,装有Qtopia1.7.0+Qte2.3.7.请问我该怎么解决这个问题阿?谢谢!
努力,加油!
离线zhangjbmail
只看该作者 8楼 发表于: 2010-01-14
感谢楼主分享
离线tomorrowlhd

只看该作者 9楼 发表于: 2010-01-15
xie xie lou zhu
离线lipusky
只看该作者 10楼 发表于: 2010-01-19
有参考价值
离线tanghao253

只看该作者 11楼 发表于: 2010-01-27
"#cp -a /usr/local/Trolltect/QtopiaCore-4.3.0-arm/lib /nfsroot "

"QtopiaCore-4.3.0"纯粹一派胡言,啥时候冒出个qtopia出来了?!
离线june2004

只看该作者 12楼 发表于: 2010-03-18
引用第7楼yyy200819于2010-01-14 15:43发表的  :
你好,我按照你的方法移植了qte4.5.3,可是在开发板上运行的时候不支持触摸屏,点击之后会消失运行的界面,而回到之前板子自带的系统界面,YC2440开发板,装有Qtopia1.7.0+Qte2.3.7.请问我该怎么解决这个问题阿?谢谢!



是啊是啊,我也是这样,害苦了我!
离线yinlixing

只看该作者 13楼 发表于: 2010-03-22
顶一下
离线solin
只看该作者 14楼 发表于: 2010-03-31
请问有移植的资料吗?qt3以上的版本的移植问题。
离线weitaotao110

只看该作者 15楼 发表于: 2010-04-10
引用第2楼lcong于2009-11-13 20:11发表的  :
QtEmbedded-4.5.3-arm与qtopia-opensource-src????

不好意思,已更正!
My blog: www.hacktao.com
走好每一天!
只看该作者 16楼 发表于: 2010-06-07
引用第12楼june2004于2010-03-18 11:13发表的  :
是啊是啊,我也是这样,害苦了我!

我的也是这个问题,请问你解决了吗?
离线actionyu
只看该作者 17楼 发表于: 2010-09-13
问个白痴问题:
把 QTE的库,字体文件,例子和android文件系统一起烧写到开发板上,在开发板上运行setenv.sh后,运行./books,提示找不到books(books是demo下一个例子的二进制文件),但ls后明明可以看见的,为什么呢?
离线hanfeng000
只看该作者 18楼 发表于: 2010-09-15
编译器也太低了 mark
android 创意 开发论坛  www.android-zh.com
离线郑世耀
只看该作者 19楼 发表于: 2010-10-29
谢谢 对我有很大的帮助
离线jyfyonghu
只看该作者 20楼 发表于: 2010-11-17
谢谢楼主的分享。
离线kimembed
只看该作者 21楼 发表于: 2010-12-02
回 7楼(yyy200819) 的帖子
那是你的配置文件没配置好
设置环境变量
gedit /home/nfs/etc/profile 这个是你要挂载的文件系统,每个人的路径是不一样的。修改这个环境变量:
export QTDIR=/opt/Qtopia
export PATH=$QTDIR/bin:$PATH
export QT_QWS_FONTDIR=/opt/Qtopia/lib/fonts
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export
LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_P
ATH
export TSLIB_FBDEVICE=/dev/fb0
TS_INFO_FILE=/sys/devices/platform/uevent
其中的路径根据你自己的安装路径改一下,我是这么做的,不知道你是不是这个原因,自己试试吧
离线zhanglong71
只看该作者 22楼 发表于: 2011-05-14
留个脚印
离线diao82008
只看该作者 23楼 发表于: 2011-05-23
/configure -embedded arm -xplatform qws/linux-arm-g++ -no-qt3support -qt-mouse-linuxtp

弱弱的问下, 这个qws是什么?
离线houyizi313
只看该作者 24楼 发表于: 2012-05-25
楼主:有没有遇到过这个问题: from /work/Qt-X11/4-2-4/qtopia/qtopiacore/qt/tools/qvfb/qvfbshmem.h:26,
                 from /work/Qt-X11/4-2-4/qtopia/qtopiacore/qt/tools/qvfb/qvfbshmem.cpp:26:
../../include/QtGui/../../../../../qtopia/qtopiacore/qt/src/gui/image/qimage.h: In member function ‘bool QImageTextKeyLang::operator<(const QImageTextKeyLang&) const’:
../../include/QtGui/../../../../../qtopia/qtopiacore/qt/src/gui/image/qimage.h:56: warning: suggest parentheses around ‘&&’ within ‘||’
make[7]: *** [.obj/debug-shared/qvfbshmem.o] Error 1
make[7]: Leaving directory `/work/Qt-X11/4-2-4/target/qtopiacore/host/tools/qvfb'
make[6]: *** [redirect_all] Error 2
make[6]: Leaving directory `/work/Qt-X11/4-2-4/target/src/tools/qt/qvfb'
make[5]: *** [all] Error 2
make[5]: Leaving directory `/work/Qt-X11/4-2-4/target/src/tools/qt/qvfb'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/work/Qt-X11/4-2-4/target/src/tools/qt/qvfb'
make[3]: *** [sub-tools-qt-qvfb] Error 2
make[3]: Leaving directory `/work/Qt-X11/4-2-4/target/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/work/Qt-X11/4-2-4/target/src'
make[1]: *** [qtopia_all] Error 2
make[1]: Leaving directory `/work/Qt-X11/4-2-4/target'
make: *** [all] Error 2
[root@localhost target]#  
我是在一直qtopia-opensource-4.2.5是遇到的、怎么都想不到它是哪里的问题?我的编译器是mipsel-linux-gcc;版本4.3.5;主机gcc4.4.4;fedora系统!加QQ337825770呗……
快速回复
限100 字节
 
上一个 下一个