• 【嵌入式开发技术之Qtopia】安装和交叉编译文档(3)——交叉编译Qt各种版本


     作者:gnuhpc 
    出处:http://www.cnblogs.com/gnuhpc/ 
      

    2.交叉编译Qt各种版本
    1)交叉编译Qtopia2.2.0,使用Arm-linux-gcc3.3.2
    首先在myqt下建立dist目录,dist里面再建立include、lib两个目录.先要进行一些支持库的交叉编译。
    zlib-1.2.3
    $tar zxvf zlib-1.2.3.tar.gz
    $ cd zlib-1.2.3/
    $./configure --shared
    $vi Makefile
    对应行改为
    CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc
    LDSHARED=/usr/local/arm/3.3.2/bin/arm-linux-gcc -shared -Wl,-soname,libz.so.1
    CPP=/usr/local/arm/3.3.2/bin/arm-linux-gcc -E
    AR=/usr/local/arm/3.3.2/bin/arm-linux-ar rc
    RANLIB=/usr/local/arm/3.3.2/bin/arm-linux-ranlib
    $make
    生成libz.so        libz.so.1      libz.so.1.2.3 
    $cp libz.so* ../dist/lib/
    $cp *.h ../dist/include/
    $cd ..
    然后在settings里的Appearance settings中进行Fonts的选择,在language中选择Chinese即可。
    e2fsprogs-1.38
    $ tar zxfv e2fsprogs-1.38.tar.gz
    $cd e2fsprogs-1.38
    $export PATH=$PATH:/usr/local/arm/3.3.2/bin
    $./configure --host=arm-linux CC=arm-linux-gcc  --enable-elf-shlibs
    $make
    (生成lib/libuuid.so *)
    $cp lib/libuuid.so* ../dist/lib/
    Libjpeg-6b
    $cd jpeg-6b/
    (export PATH=$PATH:/usr/local/arm/3.3.2/bin)
    $./configure --host=arm-linux-gcc CC=arm-linux-gcc
    $make
    $cp *.o ../dist/lib/
    $cp *.h ../dist/include/
    可以给qt-embedded添加好for arm的libjpeg库.向目录中也拷贝一份: /usr/local/arm/3.3.2/arm-linux/lib
    拷贝 jconfig.h jmorecfg.h jpeglib.h 到 /usr/local/arm/3.3.2/arm-linux/include/
    $sudo cp jconfig.h jmorecfg.h jpeglib.h /usr/local/arm/3.3.2/arm-linux/sys-include/
    libpng-1.2.23
    $tar zxvf libpng-1.2.33-no-config.tar.gz
    $cd libpng-1.2.23/
    (export PATH=$PATH:/usr/local/arm/3.3.2/bin)
    $cp scripts/makefile.linux ./Makefile
    $vi Makefile
    改为
    AR_RC=arm-linux-ar rc
    CC=arm-linux-gcc
    RANLIB=arm-linux-ranlib
    ZLIBLIB=../zlib-1.2.3
    ZLIBINC=../zlib-1.2.3
    $make
    $cp libpng12.so ../dist/lib/libpng.so
    $cp libpng12.so* ../dist/lib/
    $cp *.h ../dist/include/
    然后开始正式进行编译qtopia-arm
    $tar zxvf qtopia-free-src-2.2.0.tar.gz
    $mv qtopia-free-2.2.0/ qtopia-arm
    $cd qtopia-arm
    $vi qtopia/mkspecs/qws/linux-arm-g++/qmake.conf
    将此行
    QMAKE_LIBS_QT = -lqte
    修改为
    QMAKE_LIBS_QT = -lqte -lpng -lz -luuid -ljpeg
    $export QTDIR=$PWD/qt2
    $export QPEDIR=/home/inno/myqt/qtopia-arm/qtopia
    $export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
    $export TMAKEDIR=/home/inno/myqt/qtopia-arm/tmake
    $export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
    $cd qtopia/
    $vim src/qt/qconfig-qpe.h
    $加入:
    $cp src/qt/qconfig-qpe.h ../qt2/src/tools/
    $cd $QPEDIR/src/libraries/qtopia
    $cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp
    $cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h
    $cd http://www.cnblogs.com/http://www.cnblogs.com/
    $export PATH=$PATH:/usr/local/arm/3.3.2/bin
    $./configure -qte "-embedded -xplatform linux-arm-g++ -qconfig qpe -no-qvfb -depths 16 -system-jpeg -system-libpng -system-zlib -gif -thread -no-xft -release -I/home/inno/myqt/dist/include -L/home/inno/myqt/dist/lib -lpng -lz -luuid -ljpeg" -qpe "-xplatform linux-arm-g++ -edition pda -displaysize 480x272 -I/home/inno/myqt/dist/include -L/home/inno/myqt/dist/lib -prefix=/home/inno/myqt/dist/qtopia"
    $make
    $make install
    这样你的qtopia镜像文件系统就在/home/inno/myqt/dist/qtopia下了。然后在dist下建立qt目录,把qtopia- host/qtopia/image/opt/qt下的所有东西复制到qt这个新建的目录下,这是为了安装字体。把qtopia-host/qtopia 下的i18n目录放在dist的qtopia下,这是为了放置翻译文件。
    运行:使用NFS将文件夹dist挂载到/mnt/下nfs上文件系统后设置变量
    export QTDIR=/mnt/dist/qt
    export QPEDIR=/mnt/dist/qtopia
    export QWS_MOUSE_PROTO=TPanel:/dev/ts0
    export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
    设置好环境变量运行,
    ./qpe
    选择语言为Chinese(MainLand)然后在settings里面的Apperance的Font里指定simsun就可以限制正常的中文了,但是大标题的下边会有黑条,英文的也是这样,我也不清楚是怎么回事。
    2)Qt-embedded的交叉编译
    $tar –xzvf qt-embedded-free-3.3.8.tar.gz
    $mv  qt-embedded-free-3.3.8  qt-embedded-free-3.3.8-arm
    $export QT2DIR=$PWD/qt3-x11
    $export QTEDIR=$PWD/qt-embedded-free-3.3.8-arm
    $cd $QTEDIR
    首先修改 src/embedded/qmouselinuxtp_qws.cpp文件,把"/dev/h3600_tsraw"改成 "/dev/touchscreen/0";然后修改src/embedded/qmouselinuxtp_qws.h文件,增加两个宏定义 "#define QT_QWS_IPAQ"、"#define QT_QWS_IPAQ_RAW" 这是相当关键的,否则可能触摸屏不会动。
    $export QTDIR=$QTEDIR
    $export PATH=$QTDIR/bin:$PATH
    $export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
    $cp /usr/local/bin/uic tools/bin
    $make  clean
    $./configure -embedded arm -no-xft -no-ipv6 -no-qvfb -depths 4,8,16,24,32 -no-cups -thread -qt-mouse-linuxtp -qt-gif
    $make
    这步完成后,我们会在/$QTEDIR/lib/目录下面看到libqte.so libqte.so.3 libqte.so.3.3 libqte.so.3.3.8这四个文件,如果加入了-thread 选项,则会产生libqte-mt.so....我们可以使用file 命令来查看这个库文件是否是我们需要的在开发板上跑的库。
    有了这个库以后我们就可以把它拷贝到我们的开发板中相应的库目录下面。


                   作者:gnuhpc
                   出处:http://www.cnblogs.com/gnuhpc/
                   除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


    分享到:

  • 相关阅读:
    ReentrantLock可重入锁的使用场景(转)
    可重入锁(good)
    AbstractQueuedSynchronizer的介绍和原理分析(转)
    Android DB类,支持MDB,SQLITE,SQLSERVER,支持查询、事务,对象直接插入和更新操作等
    sqlite 时间函数及时间处理
    android query 模糊查询
    Android 时间轴
    Android fastjson
    Android SQLite案例
    Android 查看和管理sqlite数据库
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2316292.html
Copyright © 2020-2023  润新知