• Qt5.2.1交叉编译,带tslib插件


    一: 源码下载地址:

    1.1: 平台:

    主机:ubuntu 14.04

    开发板: cpu arm-cortex-a8,故而我在配置我的qmake.conf的时候填写的为armV7-a

    QT版本: qt everywhere opensource 5.2.1

    Busybox版本:busybox-1.22.0

    arm交叉编译工具:arm-none-linux-gnueabi 4.8.1

    1.2: 交叉编译工具:

    版本: arm-none-linux-gnueabi 4.8.1

    附上我用的交叉编译工具,我把他上传到csdn是为了备份.由于我的账号在csdn的限制为60M,故而我将文件分为了8份.由于写这篇文章的时候上传的资料智能看见第八份,故而这里只有这么一个链接.

    http://download.csdn.net/detail/mkndg/7374909

    1.3: Qt5.2.1下载地址:

    http://download.qt-project.org/archive/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.tar.gz

    1.4: tslib1.4下载地址:

    http://download.csdn.net/detail/MKNDG/3291565

    二: 交叉编译

    步骤如下:

    1:安装交叉编译工具

    1.1: 将下载的交叉编译工具解压(用sudo解压),得到一个arm-4.8.1的文件夹,将其移动到/usr/local下面去

    1.2: 添加全局环境变量: 

    vim /etc/bash.bashrc,在此文件的最后写上这一句:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. export PATH=/usr/local/arm-4.8.1/bin:$PATH  

    2:交叉编译tslib1.4

    2.1:解压tslib1.4并进入其中,编写配置文件

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. vim configTslib14.sh  

    在此文件中写入以下内容并保存退出:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. #!/bin/sh  
    2. make clean && make distclean  
    3. echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache  
    4. CC=/usr/local/arm-4.8.1/bin/arm-linux-gcc ./configure --host=arm-linux --prefix=/usr/local/tslib1.4 --cache-file=arm-linux.cache  
    5. make && make install  

    然后:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. chmod a+x  configTslib14.sh && sudo ./configTslib14.sh  

    3:解压qteverywhere包:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. tar -xvf  qt-everywhere-opensource-src-5.2.1.tar.gz && cd qt-everywhere-opensource-src-5.2.1  

    3.1:编写configure文件:

    vim 或者 

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. gedit configInstallQt5.2.1.sh  

    根据需要在里面写入需要的configure内容,我的配置如下:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. ./configure -prefix /usr/local/qt-5.2.1-embedded-arm-linux -release -opensource -qt-libpng -qt-libjpeg -plugin-sql-sqlite -widgets -qt-sql-sqlite -make libs -no-cups -no-nis -no-iconv -no-dbus -no-openssl -no-iconv -no-accessibility -no-javascript-jit  -no-sse2 -silent -xplatform  linux-arm-gnueabi-g++  -nomake tools -nomake examples -nomake tests -qt-freetype  -no-glib -strip -linuxfb -plugindir /usr/local/qt-5.2.1-embedded-arm-linux/plugins -I/usr/local/tslib1.4/include -L/usr/local/tslib1.4/lib -confirm-license "$@" -verbose  

    3.3:配置qmake.conf

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf  

    我的此文件配置如下:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. MAKEFILE_GENERATOR      = UNIX  
    2. CONFIG                 += incremental gdb_dwarf_index  
    3. QMAKE_INCREMENTAL_STYLE = sublib  
    4. QT_QPA_DEFAULT_PLATFORM = linuxfb  
    5. QMAKE_CFLAGS_RELEASE   += -O2 -march=armv7-a  
    6. QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a  
    7.   
    8. include(../common/linux.conf)  
    9. include(../common/gcc-base-unix.conf)  
    10. include(../common/g++-unix.conf)  
    11.   
    12. QMAKE_INCDIR += /usr/local/tslib1.4/include  
    13. QMAKE_LIBDIR += /usr/local/tslib1.4/lib  
    14.   
    15. QMAKE_CC                = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc -lts  
    16. QMAKE_CXX               = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ -lts  
    17. QMAKE_LINK              = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ -lts  
    18. QMAKE_LINK_SHLIB        = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ -lts  
    19.   
    20. QMAKE_AR                = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-ar cqs  
    21. QMAKE_OBJCOPY           = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-objcopy  
    22. QMAKE_NM                = /usr/local/arm-4.8.1/bin/arm-linux-gnueabi-nm -P  
    23. QMAKE_STRIP             = /usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-strip  
    24.   
    25. load(qt_config)  


    执行:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. chmod a+x configInstallQt5.2.1.sh &&  sudo ./configInstallQt5.2.1.sh && sudo make -j 8 && sudo make install -j 8  

    3.4:为qt添加tslib插件

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. vim tslibPluginInstall.sh  
    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. sudo cp qt-everywhere-opensource-src-5.2.1/qtbase/bin/qmake /usr/bin/qmake_emb_5.2.1  
    2. cd qt-everywhere-opensource-src-5.2.1/qtbase/src/plugins/generic/tslib/  
    3. sudo cp /usr/local/tslib1.4/include/tslib.h ./  
    4. qmake_emb_5.2.1  
    5. sudo make && sudo make install  
    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. chmod a+x tslibPluginInstall.sh && sudo ./tslibPluginInstall.sh  

    三:将编译好的qt库以及tslib库移植到文件系统中并写好配置文件

    根据需要将qt下面的库拷贝到文件系统,包括qt安装目录下面的plugins文件夹

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. vim qtAndTsInstall.sh  
    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. #!/bin/sh  
    2. QTPATH=/usr/local/qt-5.2.1-embedded-arm-linux  
    3. TSLIBPATH=/usr/local/tslib1.4  
    4. NFSROOTPATH=~/nfsroot  
    5. rm -rf $NFSROOTPATH$QTPATH/fonts  
    6. cp ./fonts $NFSROOTPATH$QTPATH/ -arf  
    7. sudo cp $QTPATH/lib/* $NFSROOTPATH$QTPATH/ -arf  
    8. sudo cp $TSLIBPATH $NFSROOTPATH/ -arf  
    9. rm -rf $NFSROOTPATH$QTPATH/*.la $NFSROOTPATH$QTPATH/*.prl  
    10. sudo cp $QTPATH/plugins $NFSROOTPATH$QTPATH/ -arf  
    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. chmod a+x qtAndTsInstall.sh && sudo ./qtAndTsInstall.sh  

    文件系统的profile文件如下:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. vim ~/nfsroot/etc/profile  
    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. export QTDIR=/usr/local/qt-5.2.1-embedded-arm-linux  
    2. export PATH=$QTDIR:$PATH  
    3. export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins  
    4. export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0  
    5. export QT_QPA_FONTDIR=$QTDIR/fonts  
    6. export TSLIB_ROOT=/usr/local/tslib1.4  
    7. export TSLIB_CALIBFILE=/etc/pointercal  
    8. export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf  
    9. export TSLIB_FBDEVICE=/dev/fb0  
    10. export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  
    11. export TSLIB_CONSOLEDEVICE=none  
    12. export TSLIB_TSDEVICE=/dev/touchscreen  
    13. export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE  
    14. export QWS_MOUSE_PROTO=tslib:$TSLIB_TSDEVICE  
    15. export set QWS_DISPLAY=LinuxFb:/dev/fb0  
    16. export set QWS_SIZE=640x480  
    17. export set QT_QWS_FONTDIR=$QTDIR/fonts/  
    18. export set LD_LIBRARY_PATH=$QTDIR:$QT_QPA_PLATFORM_PLUGIN_PATH:$QT_QPA_FONTDIR:$TSLIB_ROOT/lib:$TSLIB_PLUGINDIR:$LD_LIBRARY_PATH  


    这样整个文件系统的环境就搭好了.交叉编译的时候用qmake_emb_5.2.1就可以了.

    运行的时候直接运行,例如: ./test

  • 相关阅读:
    js 数组的length(javascript教程四)
    js利用数组length属性清空和截短数组
    mysql一对多关联查询的时候筛选条件
    PHP错误处理及异常处理笔记
    Javascript获取URL地址变量参数值的方法
    php 提示Warning: mysql_fetch_array() expects
    Centos中安装PHP的PDO MySQL扩展的教程
    ASP.NET缓存 Cache之数据缓存
    Spring.Net框架一:Spring.Net简介
    T4模板
  • 原文地址:https://www.cnblogs.com/subo_peng/p/5241359.html
Copyright © 2020-2023  润新知