• ARM40 Ubuntu交叉编译Qt4.8.7


    https://blog.csdn.net/jzzy_hony/article/details/79181605

    准备

        主机平台:Ubuntu 16.04 LTS(x64)
        目标平台:ARM40-A5D3
        Qt版本:Qt4.8.7
        tslib github
        ARM-GCC编译工具链:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi

    交叉编译工具链

        下载gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz
        gcc.png
            安装ARM-GCC编译工具链

    $ sudo xz -d gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz
    $ ls
    $ sudo tar xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar -C /opt/

        1
        2
        3

        编辑.bashrc文件

    $ cd ~
    $ vim .bashrc

        1
        2

        在.bashrc的末尾添加下面的文本

            export PATH=$PATH:/opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/

        查看ARM-GCC版本

    $ arm-linux-gnueabi-gcc -v

        1

        Thread model: posix
        gcc version 4.9.4 (Linaro GCC 4.9-2017.01)

    安装tslib

        使用浏览器下载tslib
        下载tslib

        使用git下载tslib

    $ sudo apt-get install git
    $ git clone https://github.com/kergoth/tslib.git

        1
        2

        正克隆到 ‘tslib’…
        remote: Counting objects: 5089, done.
        remote: Total 5089 (delta 0), reused 0 (delta 0), pack-reused 5089
        接收对象中: 100% (5089/5089), 2.39 MiB | 429.00 KiB/s, 完成.
        处理 delta 中: 100% (3505/3505), 完成.
        检查连接… 完成。

        编译tslib

    $ sudo apt-get install automake libtool
    $ sudo mkdir /opt/tslib
    $ cd tslib
    $ ./autogen.sh
    $ ./configure CC=arm-linux-gnueabi-gcc
                   CXX=arm-linux-gnueabi-g++
                   --prefix=/opt/tslib
                   --host=arm-linux-gnueabi
                   ac_cv_func_malloc_0_nonnull=yes
    $ make&&sudo make install

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10

        编译报错

            /home/jonny/tslib/libtool: line 10540: arm-linux-gnueabi-gcc: command not found
            libtool: error: error: relink ‘linear.la’ with the above command before installing it
            Makefile:755: recipe for target ‘install-pluginexecLTLIBRARIES’ failed
            make2: * [install-pluginexecLTLIBRARIES] Error 1
            make2: Leaving directory ‘/home/jonny/tslib/plugins’
            Makefile:1021: recipe for target ‘install-am’ failed
            make1: * [install-am] Error 2
            make1: Leaving directory ‘/home/jonny/tslib/plugins’
            Makefile:483: recipe for target ‘install-recursive’ failed
            make: * [install-recursive] Error 1

        解决方案
        原因:sudo命令使用的是root的环境变量,sudo就找不到ARM-GCC了
        解决:添加ARM-GCC的绝对路径就好了

    $ ./configure CC=/opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
                CXX=/opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++
                --prefix=/opt/tslib
                --host=arm-linux-gnueabi
                ac_cv_func_malloc_0_nonnull=yes

        1
        2
        3
        4
        5

        查看tslib

    $ ls /opt/tslib/

        1

        bin etc include lib share

    编译Qt4.8.7

        下载qt-everywhere-opensource-src-4.8.7.tar.gz
        qt4.8.7
        编辑qmake.conf

    $ cd ~
    $ tar xvf qt-everywhere-opensource-src-4.8.7.tar.gz ./
    $ cd qt-everywhere-opensource-src-4.8.7/
    $ vim  ./mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf

        1
        2
        3
        4

    #
    # qmake configuration for building with arm-none-linux-gnueabi-g++
    #

    include(../../common/linux.conf)
    include(../../common/gcc-base-unix.conf)
    include(../../common/g++-unix.conf)
    include(../../common/qws.conf)

    # modifications to g++.conf
    QMAKE_CC                = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc -lts
    QMAKE_CXX               = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++ -lts
    QMAKE_LINK              = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++ -lts
    QMAKE_LINK_SHLIB        = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++ -lts

    # modifications to linux.conf
    QMAKE_AR                = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-ar cqs
    QMAKE_OBJCOPY           = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-objcopy
    QMAKE_STRIP             = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-strip

    load(qt_config)

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21

        configure编译配置

            -debug-and-release Qt调试;
            -shared 动态编译;
            -static 静态编译;
            -make docs 文档帮助;
            -DQT_NO_QWS_CURSOR 不显示鼠标

    $ ./configure 
                --prefix=/opt/qte4.8.7
                -opensource
                -debug-and-release
                -shared
                -Declarative
                -fast
                -no-largefile
                -qt-sql-sqlite
                -qt3support
                -exceptions
                -xmlpatterns
                -script
                -scripttools
                -no-glib
                -no-phonon
                -svg
                -no-webkit
                -qt-zlib
                -qt-libtiff
                -qt-libpng
                -qt-libjpeg
                -make libs
                -nomake tools
                -nomake examples
                -make docs
                -nomake demos
                -no-nis
                -no-cups
                -no-iconv
                -no-dbus
                -xplatform qws/linux-arm-gnueabi-g++
                -embedded arm
                -little-endian
                -qt-freetype
                -depths 16,24,32
                -qt-gfx-linuxfb
                -no-gfx-transformed
                -no-gfx-multiscreen
                -no-gfx-vnc
                -no-gfx-qvfb
                -qt-kbd-linuxinput
                -qt-kbd-tty 
                -no-kbd-qvfb
                -armfpa
                -optimized-qmake 
                -no-mouse-qvfb
                -qt-mouse-linuxtp
                -qt-mouse-tslib
                -DQT_QLOCALE_USES_FCVT
                -DQT_NO_QWS_CURSOR
                -pch
                -I/opt/tslib/include
                -L/opt/tslib/lib 
                -confirm-license     

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        51
        52
        53
        54
        55

        编译安装Qt

    $ sudo mkdir /opt/qte4.8.7
    $ make -j 4
    $ sudo make install

        1
        2
        3

        编译报错

            make3: Leaving directory ‘/home/jonny/qt-everywhere-opensource-src-4.8.7/tools/linguist/linguist’
            make2: Leaving directory ‘/home/jonny/qt-everywhere-opensource-src-4.8.7/tools/linguist’
            Makefile:339: recipe for target ‘sub-linguist-make_default-ordered’ failed
            make1: * [sub-linguist-make_default-ordered] Error 2
            make1: Leaving directory ‘/home/jonny/qt-everywhere-opensource-src-4.8.7/tools’
            Makefile:742: recipe for target ‘sub-tools-make_default-ordered’ failed
            make: * [sub-tools-make_default-ordered] Error 2
            — 解决方案:configure项添加 -nomake tools 或者直接忽视之
            Makefile:1054: recipe for target ‘.moc/release-shared-emb-arm/moc_qabstractanimation.cpp’ failed
            make1: * [.moc/release-shared-emb-arm/moc_qabstractanimation.cpp] Error 2
            make1: * 正在等待未完成的任务….
            Makefile:1314: recipe for target ‘.moc/release-shared-emb-arm/moc_qvariantanimation.cpp’ failed
            make1: * [.moc/release-shared-emb-arm/moc_qvariantanimation.cpp] Error 2
            Makefile:1433: recipe for target ‘.moc/release-shared-emb-arm/moc_qpropertyanimation.cpp’ failed
            make1: * [.moc/release-shared-emb-arm/moc_qpropertyanimation.cpp] Error 2
            make1: Leaving directory ‘/home/jonny/qt-everywhere-opensource-src-4.8.7/src/corelib’
            Makefile:201: recipe for target ‘sub-corelib-make_default-ordered’ failed
            make: * [sub-corelib-make_default-ordered] Error 2
            解决方案:一般都是编译器路径有问题导致的,检查qmake.conf文件

        查看Qt版本

    $ cd /opt/qte4.8.7/bin/
    $ ./qmake -v

        1
        2

        QMake version 2.01a
        Using Qt version 4.8.7 in /opt/qte4.8.7/lib

    至此,Qt4.8.7交叉编译完成。
    参考引用

        米尔技术社区
        veryARM
        Qt for Embedded Linux Environment Variables
    ————————————————
    版权声明:本文为CSDN博主「jzzy_hony」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/jzzy_hony/java/article/details/79181605

  • 相关阅读:
    Troubleshooting FIM: (No Display Name) in FIM Portal
    FIM2010同步用户
    Problem with WinRM on Exchange 2013 Management Shell and Exchange Toolbox on a new exchange 2013 with CAFE and BE on single server installation
    SAML : A SAML stack
    Flutter-使用Custompaint绘制一个圆圈进度条
    Flutter-自绘组件CustomPaint
    AnimatedSwitcher
    入职一个月
    flutter--static关键字
    Flutter-变量初始化问题
  • 原文地址:https://www.cnblogs.com/xiang--liu/p/13050841.html
Copyright © 2020-2023  润新知