Qt学习(如何交叉编译一个Qt程序使其能在板子上运行) .

来源:互联网 发布:自行车租赁软件 编辑:程序博客网 时间:2024/04/29 03:52

 如何交叉编译一个Qt程序使其能在板子上运行

      首先安装交叉编译器arm-linux-gcc3.4.6,先将其压缩包放到一个目录下,然后对其进行解压,举了解压命令为:tar xjvf arm-linux-gcc-3.4.6-glibc-2.3.6.tar.bz2 -C /usr/local/(注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。这样我们就将编译器安装在了/usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/下,然后设置环境变量,仍然是:gedit ~/.profile 在文件最后添加:export PATH=$PATH:/usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/bin,保存文件,然后执行:source ~/.profile是变量立即生效,然后在命令行下输入:arm-linux-gcc -v检查是否安装成功,安装成功则出现:Reading specs from /usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/bin/../lib/gcc/arm-linux/3.4.6/specs
Configured with: /home/samba/armlinux/crosstool/crosstool-0.42/build/arm-linux/gcc-3.4.6-glibc-2.3.6/gcc-3.4.6/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/opt/crosstool/gcc-3.4.6-glibc-2.3.6/arm-linux --with-headers=/opt/crosstool/gcc-3.4.6-glibc-2.3.6/arm-linux/arm-linux/include --with-local-prefix=/opt/crosstool/gcc-3.4.6-glibc-2.3.6/arm-linux/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.6
否则可能是环境变量设置问题,仔细检查应该就能解决。

交叉编译工具安装好后开始用其交叉编译qte4.6.3-arm,

下面开始编译安装qte4.6.3-arm,首先到官方下载最新版的qte,版本为:qt-everywhere-opensource-src-4.6.3.tar.gz ,下载地址为:http://qt.nokia.com/downloads/embedded-linux-cpp,然后开始编译安装,
具体步骤如下:进入文件所在目录:cd /root/song,解压:tar xzvf qt-everywhere-opensource-src-4.6.3.tar.gz,进入解压目录:cd qt-everywhere-opensource-src-4.6.3,修改错误文件:gedit src/3rdparty/freetype/include/freetype/config/ftconfig.h,将第330行修改为:"orr    %0, %0,%2, lsl #16\n\t"  /* %0 |= %2 << 16 */,防止出现如下错误:text/qfontengine_ft.cpp: In member function `bool QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat)':
text/qfontengine_ft.cpp:696: warning: converting to `int' from `qreal'
{standard input}: Assembler messages:
{standard input}:781: Error: register or shift expression expected -- `orr r3,r2,lsl#16'
{standard input}:792: Error: register or shift expression expected -- `orr r2,r3,lsl#16'
{standard input}:7752: Error: register or shift expression expected -- `orr r3,r0,lsl#16'
{standard input}:7765: Error: register or shift expression expected -- `orr r1,r0,lsl#16'
make[1]: *** [.obj/release-shared-emb-arm/qfontengine_ft.o] 错误 1
make[1]:正在离开目录 `/root/song/qt-everywhere-opensource-src-4.6.3;然后开始配置configure:命令为:./configure -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -qt-mouse-pc -no-gfx-qvfb -no-gfx-vnc -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-qvfb -no-gfx-vnc -qt-mouse-tslib -no-glib -prefix /usr/local/Trolltech/qte4.7.2-arm -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -I/usr/local/tslib/include -L/usr/local/tslib/lib -v -D__ARM_ARCH_5TEJ__,然后输入o回车,再输入yes回车开始配置,配置成功提示:Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /usr/local/qte4.6.3-arm

To reconfigure, run 'make confclean' and 'configure'.
然后开始编译:make,需要等待一会,快慢视个人配置。大概半个小时左右make完毕,然后执行:make install,完成后qte就被安装在了/usr/local/qte4.6.3-arm下面,至此,qte4.6.3-arm编译安装成功。

下面我们就行交叉编译一个程序使其能在板子上运行,用交叉编译器arm-linux-gcc配置编译过的qte4.6.3,使用其下面的qmake工具区编译程序。首先要进入到要编译程序的目录下,在找到交叉编译过的qte下的qmake工具运行命令例如:/usr/local/qte/bin/qmake 运行之后会出现已个Makefile文件(当你打开此文件里面会又有说明其使用arm-linux-gcc交叉编译工具的说明,如果在pc机下安装的Qt编写程序时会出现Makefile文件当你打开时他会说明使用的是gcc编译器),然后make一下会生成一个可执行文件,此时的程序可以在板子上直接运行了(你的板子上必须有Qte的相关库)

原创粉丝点击