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

ARM40 Ubuntu交叉编译Qt4.8.7

上一篇:vagrant+virtualbox 构建mac虚拟机环境


下一篇:Linux性能监控-top