Chinaunix首页 | 论坛 | 博客
  • 博客访问: 468077
  • 博文数量: 62
  • 博客积分: 1742
  • 博客等级: 中尉
  • 技术积分: 859
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-06 00:13
个人简介

这是一句很长很长而且又很啰嗦并且很无聊的废话...

文章分类

全部博文(62)

文章存档

2013年(1)

2012年(13)

2011年(48)

分类: LINUX

2012-08-02 15:40:05

环境:
     armv5
     gcc3.4.4
     glibc2.3.5
     ubuntu10.10

首先下载qt4.7.0源码包
再下载tslib1.4

1. 先编译tslib1.4
解压进入该目录执行
#./autogen.sh //用于生成configure脚本

#echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache //产生一个cache文件arm-linux.cache,欺骗configure

#CC=yourpath/arm-linux-gcc ./configure --host=arm-linux --prefix=yourpath/tslib  --cache-file=arm-linux.cache

#make

#install


2. OK,接下来编译QT

解压源码包,进入该目录,因为编译器的版本和其他原因,所以在编译之前需要修改几个地方.

2.1. qt4.7/mkspecs/qws/linux-arm-g++/qmake.conf 这是因为是用了tslib.

+QMAKE_INCDIR = yourpath/tslib14/include

+QMAKE_LIBDIR = yourpath/tslib14/lib

-QMAKE_CC  = yourpath/arm-linux-gcc

-QMAKE_CXX =  yourpath /arm-linux-g++

-QMAKE_LINK =  yourpath /arm-linux-g++

-QMAKE_LINK_SHLIB =  yourpath /arm-linux-g++

+QMAKE_CC  = yourpath/arm-linux-gcc -lts

+QMAKE_CXX =  yourpath /arm-linux-g++ -lts

+QMAKE_LINK =  yourpath /arm-linux-g++ -lts

+QMAKE_LINK_SHLIB =  yourpath /arm-linux-g++ -lts

2.2. qt4.7/src/3rdparty/freetype/include/freetype/config/ftconfig.h Line 330. 这是因为编译器版本.

-"orr %0, %2, lsl #16/n/t" /* %0 |= %2 << 16 */

+"orr %0, %0, %2, lsl #16/n/t" /* %0 |= %2 << 16 */

2.3. qt4.7/src/corelib/tools/qchar.h Line 361. 这个是因为跑应用时报个参数错误.

-};

+}

+#if (defined(__arm__) || defined(__ARMEL__))

+ Q_PACKED

+#endif

+;

修改完上面以后,接下来可以配置编译了.

#./configure -prefix /home/dara/qt/qt4.7 -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 24,32 -fast -optimized-qmake -qt-sql-sqlite -no-xmlpatterns -no-phonon-backend -no-script -no-scripttools -no-libjpeg -qt-zlib -no-stl -no-gif -qt-freetype -no-iconv -no-dbus -no-openvg -no-usedeffiles -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit -no-qvfb -no-svg -no-phonon -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -qt-mouse-tslib -qt-kbd-linuxinput -no-kbd-tty -no-multimedia -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -nomake examples -nomake tools -nomake docs  -D__ARM_ARCH_5TEJ__ -Iyourpath/linux-2.6.14-fa/include -qconfig xxx

#make

#make install

编译安装完以后在yourpath/qt4.7里把lib的so拷到板子的/lib里,接着再设置一下环境变量:

export QWS_DISPLAY="LinuxFB:/dev/fb1"

export QWS_MOUSE_PROTO="IntelliMouse:/dev/mouse0"

export QWS_SIZE="1024x768"

export QT_QWS_FONTDIR="/mnt/nfs/qt/fonts"

export QWS_KEYBOARD="LinuxInput:/dev/event1"

运行一个QT的dome

#./mainwindow -qws

到这里,应该可以看到QT的界面了.(注意:以上的编译出来的库是未经裁剪的,如果需要更小的库,需要自己按需要去只选择用到的控件和特性,其他都不要,也就是配置qconfig-xxx.h).


使用qconfig把库裁剪的更小.

#cd yourpath/qt-everywhere-opensource-src-4.7.0/tools/qconfig

#make

接着复制yourpath/qt-everywhere-opensource-src-4.7.0/src/corelib/global/qfeatures.txt到板子上,

把qconfig放到板子上跑,用qconfig打开刚刚复制的qfeatures.txt文件,可以看到一个树选项界面,把不需要用到的功能都去掉,最后在左上角按保存文件qconfig-xxx.h,把这个xxx改成你的名称然后放到yourpath/qt-everywhere-opensource-src-4.7.0/src/corelib/global目录下,最后在./configure的最后加上-qconfig xxx,重新编译即可.我这里编译完后得到的so文件为:

libQtCore.so       2.4M

libQtGui.so          4.5M

libQtNetwork.so  495K

写个测试程序:

main.cpp

点击(此处)折叠或打开

  1. #include
  2. int main(int argc, char *argv[])
  3. {
  4.    QApplication app(argc, argv);
  5.    QWidget *pw = new QWidget();
  6.    QPushButton *sw1 = new QPushButton("kiss by dara", pw);
  7.    QWidget *sw2=new QWidget(pw);
  8.    QVBoxLayout *layout = new QVBoxLayout();
  9.    layout->addWidget(sw1);
  10.    layout->addWidget(sw2);
  11.    pw->setLayout(layout);
  12.    pw->resize(1024,768);
  13.    pw->setBackgroundColor(Qt::red);
  14.    pw->show();
  15.    return app.exec();
  16. }

#qmake -project

#qmake -o Makefile xxx.pro

#make

放板子上跑,一切OK!


最后,还有一个把库变得更小的方法,使用zlib压缩3个so文件为gz文件,我这里最后得到的大小为3.1M,在板子启动后,再解压放进/lib目下即可.例如我这里板子主频500M,解压需要7-8秒左右.


阅读(5820) | 评论(0) | 转发(0) |
0

上一篇:卡诺图

下一篇:立方体化简

给主人留下些什么吧!~~