我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1779|回复: 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的每日心情
    奋斗
    昨天 12:23
  • 签到天数: 76 天

    [LV.6]常住居民II

    27

    主题

    2316

    回帖

    1500

    积分

    二级逆天

    积分
    1500

    终身成就奖社区居民

    QQ
    发表于 2016-10-13 21:09:43 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-10-7 21:17
  • 签到天数: 103 天

    [LV.6]常住居民II

    92

    主题

    1万

    回帖

    7万

    积分

    三级逆天

    积分
    73181

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

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

    使用道具 举报

    该用户从未签到

    20

    主题

    932

    回帖

    319

    积分

    二级逆天

    积分
    319

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

    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的每日心情

    3 天前
  • 签到天数: 126 天

    [LV.7]常住居民III

    2

    主题

    7227

    回帖

    1万

    积分

    三级逆天

    积分
    10711

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:15
  • 签到天数: 186 天

    [LV.7]常住居民III

    2

    主题

    8897

    回帖

    1万

    积分

    三级逆天

    积分
    10354

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-12-5 18:05
  • 签到天数: 1 天

    [LV.1]初来乍到

    32

    主题

    616

    回帖

    486

    积分

    二级逆天

    积分
    486

    终身成就奖

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

    使用道具 举报

  • TA的每日心情

    3 天前
  • 签到天数: 126 天

    [LV.7]常住居民III

    2

    主题

    7227

    回帖

    1万

    积分

    三级逆天

    积分
    10711

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

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

    使用道具 举报

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

    本版积分规则

    每日签到,有金币领取。


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

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

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

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