转:
1.安装交叉编译环境
a..下载arm-linux-gcc-3.4.1.tar.bz2(建议用的这个版本的,有些低版本的交叉编译工具在编译时会出错)
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请参考我的这个帖子:
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!
阅读(3425) | 评论(1) | 转发(0) |