我们从2011年坚守至今,只想做存粹的技术论坛,记录你的技术足迹,有空就回来看看。  由于网站在外面,点击附件后可能要20秒才弹出下载,请耐心等待,勿重复点击

 找回密码
 立即注册
搜索
查看: 1673|回复: 13

[技术文章] qt-5.6.0 for arm的移植

[复制链接]

该用户从未签到

7

主题

10

回帖

0

积分

一级逆天

积分
0

终身成就奖

QQ
发表于 2016-10-13 16:25:57 | 显示全部楼层 |阅读模式
      移植是比较简单的,关键的问题在于裁剪。目前我没做裁剪优化。

     如果只需要基本模块,只要下载qtbase-5.6.0即可。
     (1)解压,我将其重命名为qtbase-5.6.0
     (2)编译ARM版的,所以选择linux-arm-gnueabi-g++,修改qtbase-5.6.0/mkspecs/linux-arm-gnueabi-g++/qmake.conf

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

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE   +=-O2 -march=armv5te

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

# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabi-gcc
QMAKE_CXX               = arm-linux-gnueabi-g++
QMAKE_LINK              = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabi-objcopy
QMAKE_NM                = arm-linux-gnueabi-nm -P
QMAKE_STRIP             = arm-linux-gnueabi-strip
load(qt_config)
              QT5较QT4最大的不同就是取消了QWS,使用QPA替代,QT_QPA_DEFAULT_PLATFORM定义了默认情况下使用哪个,这里选择linuxfb,
              QMAKE_CFLAGS_RELEASE   做核版本配置,可以是armv5te、armv7xxx,不知道的可以不写。
             然后就是arm-linux-gnueabi-xxx 交叉编译工具链的名字修改
     (3)在qtbase-5.6.0下建立build目录,编译到此目录下
     (4)进入qtbase-5.6.0/build目录,创建一个编译脚本,名为buildqt5.sh(名字随便)
             #!/bin/bash

TSLIB=/home/ubuntu/tslib

CROSS=/home/ubuntu/external-toolchain
export PATH=$PATHCROSS/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATHCROSS/libTSLIB/lib
export LIBRARY_PATH=$LIBRARY_PATHCROSS/includeTSLIB/include

../configure \
    -release \
    -opensource -confirm-license \
    -shared \
    -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci \
    -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 -no-sql-tds \
    -no-qml-debug \
    -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx -no-avx2 \
    -no-mips_dsp -no-mips_dspr2 \
    -no-pkg-config \
    -qt-zlib \
    -no-journald -no-syslog -no-gif \
    -no-libpng -qt-libjpeg -qt-freetype -no-harfbuzz \
    -no-openssl -no-libproxy \
    -no-xinput2 -no-xcb-xlib -no-glib \
    -no-xkbcommon-evdev -no-libinput \
    -nomake examples \
    -nomake tests \
    -no-compile-examples \
    -no-pulseaudio -no-alsa -no-gtkstyle \
    -gui -widgets \
    -no-nis -no-cups -no-iconv \
    -evdev -no-icu -no-fontconfig -strip \
    -no-pch -no-dbus \
    -tslib -I$TSLIB/include -L$TSLIB/lib \
    -force-asserts \
    -no-use-gold-linker \
    -no-xcb -no-kms -no-mirclient \
    -linuxfb -no-egl -no-eglfs -no-directfb -no-opengl \
    -xplatform linux-arm-gnueabi-g++ \
    -no-gstreamer -no-system-proxies \
    -prefix $(pwd)/../../qt5.6.0 -v

make && make install

            这里我考虑到以后需要用到触摸屏,所以把TSLIB加上。不需要数据库、opengl、xcb等等,当然有些默认是关闭的,可以在qtbase-5.6.0下./configure --help查看具体的选项。选择-linuxfb。这里需要注意的是-shared,若使用-static,用静态库去编译QT程序,可以,但是这样的程序不能使用QPA等插件了,linuxfb插件也不能加载了,程序也就运行不起来了。-prefix定义INSTALL到哪里
     (5) 添加执行权限,运行这个脚本。环境啊配置啊,都没问题的话,编译完成就会得到qtbase-5.6.0/../qt5.6.0,这就是需要的ARM版qtbase5.6.0
回复

使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    26

    主题

    2197

    回帖

    1225

    积分

    二级逆天

    积分
    1225

    终身成就奖社区居民

    QQ
    发表于 2016-10-13 21:09:43 | 显示全部楼层
    有没有实际跑起来看看效果
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:54
  • 签到天数: 29 天

    [LV.4]偶尔看看III

    49

    主题

    1万

    回帖

    7万

    积分

    三级逆天

    积分
    70212

    终身成就奖特殊贡献奖原创先锋奖社区居民忠实会员社区劳模最爱沙发社区明星原创达人优秀斑竹奖宣传大使奖

    QQ
    发表于 2016-10-14 00:25:00 | 显示全部楼层
    学习一下来着了
    回复

    使用道具 举报

    该用户从未签到

    35

    主题

    930

    回帖

    24

    积分

    二级逆天

    积分
    24

    社区居民忠实会员终身成就奖

    QQ
    发表于 2016-10-14 10:58:57 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    58

    主题

    535

    回帖

    0

    积分

    PADS-181015高级班

    积分
    0

    终身成就奖

    发表于 2017-6-4 09:49:31 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    23

    主题

    165

    回帖

    1

    积分

    二级逆天

    积分
    1

    终身成就奖

    QQ
    发表于 2017-6-7 09:06:40 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:53
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    2

    主题

    7129

    回帖

    1万

    积分

    三级逆天

    积分
    10343

    终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2020-5-8 08:41:26 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 39 天

    [LV.5]常住居民I

    2

    主题

    8271

    回帖

    9590

    积分

    二级逆天

    积分
    9590

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2020-6-3 08:52:25 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    32

    主题

    610

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖

    发表于 2020-6-10 08:27:16 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:53
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    2

    主题

    7129

    回帖

    1万

    积分

    三级逆天

    积分
    10343

    终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2020-11-3 08:47:19 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    平平安安
    TOP
    快速回复 返回顶部 返回列表