嵌入式Linux下移植QT

来源:互联网 发布:mac guid分区表方案 编辑:程序博客网 时间:2024/04/27 20:45

作者:释迦Sakya

转自:http://my.oschina.net/u/212149/blog/69589


一 操作环境

ubuntu12.04

qt-everywhere-opensource-src-4.8.2.tar.gz

arm-2009q1-203-arm-none-linux-gnueabi.bin

SEED_DEC138

二 前期准备

1 用户已经安装好交叉编译工具

2 下载 Qt libraries 4.8.2 for embedded Linux (228 MB),得到qt-everywhere-opensource-src-4.8.2.tar.gz

三 编译安装

总体来说,编译过程分如下四个步骤

1 解压qt-everywhere-opensource-src-4.8.2.tar.gz

2 ./configure配置选项,生成相应的Makefile

3 make交叉编译生成库文件

4 sudo make install 安装生成的库

详细的配置编译过程:

1 在用户预定的位置解压缩qt-everywhere-opensource-src-4.8.2.tar.gz

 cd <anywhere>

 $ tar -zxvf qt-everywhere-opensource-src-4.8.2.tar.gz

  生成目录 qt-everywhere-opensource-src-4.8.2/

 $ cd qt-everywhere-opensource-src-4.8.2/

2 ./configure配置选项

  在编译嵌入式Linux平台的库之前,通过运行./configure -embedded -help,可以列出所有的配置选项。

  QT官方网站有配置选项的帮助页面http://qt-project.org/doc/qt-4.8/configure-options.html

  在运行配置之前,需要修改一个文件。在目录qt-everywhere-opensource-src-4.8.2/mkspecs/qws/linux-arm-g++/下,

  有一个文件qmake.conf ,指示了编译使用的交叉编译工具,需要对这个文件作简单的配置。  

  本文用的arm-2009q1-203-arm-none-linux-gnueabi.bin所提供的交叉编译工具是arm-none-linux-       gnueabi-xxx形式的,所以qmake.conf修改如下:

  $ cd <anywhere>/qt-everywhere-opensource-src-4.8.2/mkspecs/qws/linux-arm-g++/

  $ gedit 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

  # modifications to linux.conf
  QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
  QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
  QMAKE_STRIP             = arm-none-linux-gnueabi-strip

  至于 -lts 那个选项,原来没加,出现了 undefined reference to `ts_read_raw' 错误。所以建议加上。

     配置选项很多,网上搜索了一个可以用的,这部分内容以后会单独写一篇文档讨论。

  ./configure -embedded arm -release -opensource -fast -no-accessibility -no-scripttools -no-mmx -no-multimedia -no-svg -no-3dnow -no-sse -no-sse2 -silent -qt-libpng -qt-libjpeg 

-no-libmng -no-libtiff -no-multimedia -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 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-glib -qt-mouse-tslib   -I   /opt/tslib/include -L /opt/tslib/lib -confirm-license "$@" 

  选项 -xplatform qws/linux-arm-g++ ,就是与我们修改的qmake.conf相关的。       

  配置完成后会生成一个Makefile文件。

$ make 

  进行交叉编译,大概需要2-3个小时。

  编译的时候,出现了错误qt Error: no such instruction: `swpb %cl,%al,[%esi]' ,我把压缩包重新解压并重复了上述过程,没有出现上述错误。

    网上也有另外的解决办法,就是修改源代码,可以参考一下http://blog.csdn.net/dkxatt/article/details/6208130

$ sudo make install 

  默认安装在 /usr/local/Trolltech/QtEmbedded-4.8.2-arm/目录下。

四 总结

  至此,移植已经完成一半了。至于怎么让代码在demo板上跑起来,下一篇文章再讨论。

参考文档:

http://qt-project.org/doc/qt-4.8/qt-embedded-install.html

http://hi.baidu.com/lujizhen/blog/item/eb5cc482cf5f1e86f603a6a5.html

http://hi.baidu.com/erteron/blog/item/a8724f03b28f5290e950cd87.html

http://blog.csdn.net/dkxatt/article/details/6208130


0 0
原创粉丝点击