Debian 9

1、依赖

Qt源码添加xcb支持,依赖xcb-util-wm、xcb-util、xcb-util-image、xcb-util-keysyms、xcb-util-renderutil、libxkbcommon、libxkbcommon-x11,其中libxkbcommon依赖xkeyboard-config、libxml,libxml依赖zlib、xz-utils。

1.1、xcb-util-wm

下载地址:Index of /releases/individual/xcbhttps://www.x.org/releases/individual/xcb/

#解压
tar -zxvf xcb-util-wm-0.4.1.tar.gz
cd xcb-util-wm-0.4.1
#交叉编译环境,其中/path/to/cross-compile指交叉编译器目录
#如/home/user/toolchain/arm-linux-gnueabihf/bin
export PATH=$PATH:/path/to/cross-compile
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
./configure --prefix=/path/to/prefix \
--host=arm-linux-gnueabihf \
--enable-option-checking
#编译
make
#安装
make install

1.2、xcb-util

下载地址:Index of /releases/individual/xcbhttps://www.x.org/releases/individual/xcb/

#解压
tar -zxvf tar -zxvf xcb-util-0.4.0.tar.gz
cd xcb-util-0.4.0
#交叉编译环境,其中/path/to/cross-compile指交叉编译器目录
#如/home/user/toolchain/arm-linux-gnueabihf/bin
export PATH=$PATH:/path/to/cross-compile
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
./configure --prefix=/path/to/prefix \
--host=arm-linux-gnueabihf \
--enable-option-checking
#编译
make
#安装
make install

1.3、xcb-util-image

下载地址:Index of /releases/individual/xcbhttps://www.x.org/releases/individual/xcb/

#解压
tar -zxvf xcb-util-image-0.4.0.tar.gz
cd xcb-util-image-0.4.0
#交叉编译环境,其中/path/to/cross-compile指交叉编译器目录
#如/home/user/toolchain/arm-linux-gnueabihf/bin
export PATH=$PATH:/path/to/cross-compile
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
./configure --prefix=/path/to/prefix \
--host=arm-linux-gnueabihf \
--enable-option-checking
#编译
make
#安装
make install

1.4、xcb-util-keysyms

下载地址:Index of /releases/individual/xcbhttps://www.x.org/releases/individual/xcb/

#解压
tar -zxvf xcb-util-keysyms-0.4.0.tar.gz
cd xcb-util-keysyms-0.4.0
#交叉编译环境,其中/path/to/cross-compile指交叉编译器目录
#如/home/user/toolchain/arm-linux-gnueabihf/bin
export PATH=$PATH:/path/to/cross-compile
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
./configure --prefix=/path/to/prefix \
--host=arm-linux-gnueabihf \
--enable-option-checking
#编译
make
#安装
make install

1.5、xcb-util-renderutil

下载地址:Index of /releases/individual/xcbhttps://www.x.org/releases/individual/xcb/

#解压
tar -zxvf xcb-util-renderutil-0.3.9.tar.gz
cd xcb-util-renderutil-0.3.9
#交叉编译环境,其中/path/to/cross-compile指交叉编译器目录
#如/home/user/toolchain/arm-linux-gnueabihf/bin
export PATH=$PATH:/path/to/cross-compile
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
./configure --prefix=/path/to/prefix \
--host=arm-linux-gnueabihf \
--enable-option-checking
#编译
make
#安装
make install

1.6、zlib

下载地址:zlib Home Site

#解压
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
CC=/home/user/toolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
./configure --prefix=/path/to/prefix
#编译
make
#安装
make install

1.7、xz-utils

下载地址:XZ Utils

#解压
tar -zxvf xz-5.2.5.tar.gz
cd xz-5.2.5
#交叉编译环境,其中/path/to/cross-compile指交叉编译器目录
#如/home/user/toolchain/arm-linux-gnueabihf/bin
export PATH=$PATH:/path/to/cross-compile
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
./configure --prefix=/path/to/prefix \
--host=arm-linux-gnueabihf
#编译
make
#安装
make install

1.8、icu

下载地址:GitHub - unicode-org/icu: The new home of the ICU project source code.

#解压
tar -zxvf icu-release-70-1.tar.gz
cd icu-release-70-1/icu4c/source
#新建build目录
mkdir build
#新建config目录
mkdir config
touch icucross.mk
touch icucross.inc
#交叉编译环境,其中/path/to/cross-compile指交叉编译器目录
#如/home/user/toolchain/arm-linux-gnueabihf/bin
export PATH=$PATH:/path/to/cross-compile
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
./configure --prefix=/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf \
--host=arm-linux-gnueabihf \
--enable-option-checking \
--with-cross-build=/home/user/toolchain/icu-release-70-1/icu4c/source/build
#编译
make
#安装
make install

1.9、libxml

下载地址:ftp://xmlsoft.org/libxml2/

#解压
tar -zxvf xcb-util-renderutil-0.3.9.tar.gz
cd xcb-util-renderutil-0.3.9
#交叉编译环境,其中/path/to/cross-compile指交叉编译器目录
#如/home/user/toolchain/arm-linux-gnueabihf/bin
export PATH=$PATH:/path/to/cross-compile
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
./configure --prefix=/path/to/prefix \
--host=arm-linux-gnueabihf \
--enable-option-checking \
--with-python=/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf/lib
#编译
make
#安装
make install

1.10、xkeyboard-config

下载地址:https://www.x.org/releases/individual/data/xkeyboard-config/xkeyboard-config-2.30.tar.gzhttps://www.x.org/releases/individual/data/xkeyboard-config/xkeyboard-config-2.30.tar.gz

#解压
tar -zxvf xkeyboard-config-2.30.tar.gz
cd xkeyboard-config-2.30
#交叉编译环境,其中/path/to/cross-compile指交叉编译器目录
#如/home/user/toolchain/arm-linux-gnueabihf/bin
export PATH=$PATH:/path/to/cross-compile
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
./configure --prefix=/path/to/prefix \
--host=arm-linux-gnueabihf \
--enable-option-checking
#编译
make
#安装
make install

1.11、libxkbcommon

下载地址:xkbcommon - a keyboard handling libraryhttps://www.xkbcommon.org/

#解压
xz -d libxkbcommon-1.4.0.tar.xz
tar -xvf libxkbcommon-1.4.0.tar
cd libxkbcommon-1.4.0
#新建交叉编译配置
nano cross.txt

cross.txt内容如下:

[binaries]
c = '/home/user/toolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc'
cpp = '/home/user/toolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-c++'
ar = '/home/user/toolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar'
strip = '/home/user/toolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip'
ld = '/home/sam/toolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ld'
pkgconfig = '/usr/bin/pkg-config'
cmake = '/usr/bin/cmake'[properties]
skip_sanity_check = true
c_link_args = ['-llzma', '-lz','-lXau', '-lxml2'][paths]
libdir = '/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf/lib'
includedir = '/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf/include'
prefix = '/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf'[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'ARM'
endian = 'little'[build_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'i686'
endian = 'little'
#安装依赖
sudo apt install bison
#配置,其中/path/to/prefix指编译安装目录
#如/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf
#把编译结果安装在交叉编译器中,否则引用到该库需要指定对应的目录
meson setup build --prefix /path/to/prefix \
--buildtype release \
--cross-file cross.txt \
-Denable-x11=false \
-Denable-wayland=false \
-Denable-docs=false \
-Denable-xkbregistry=false \
-Dxkb-config-root=/home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf/lib/pkgconfig
#编译安装
ninja -C build install

2、交叉编译Qt

2.1、文件qmake.conf

#
# qmake configuration for building with arm-linux-gnueabi-g++
#MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublibinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)QMAKE_INCDIR            += /home/sam/ArmToolchain/arm-linux-gnueabihf/arm-linux-gnueabihf/include
QMAKE_LIBDIR            += /home/sam/ArmToolchain/arm-linux-gnueabihf/arm-linux-gnueabihf/lib
QMAKE_LIBS              += -lXau
QMAKE_LIBS              += -lxcb
QMAKE_LIBS              += -lxcb-xkb
QMAKE_LIBS              += -lxkbcommon
QMAKE_LIBS              += -lxkbcommon-x11# modifications to g++.conf
QMAKE_CC                = /home/sam/ArmToolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
QMAKE_CXX               = /home/sam/ArmToolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
QMAKE_LINK              = /home/sam/ArmToolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = /home/sam/ArmToolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++# modifications to linux.conf
QMAKE_AR                = /home/sam/ArmToolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = /home/sam/ArmToolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM                = /home/sam/ArmToolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = /home/sam/ArmToolchain/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip
load(qt_config)

2.2、脚本configure.sh

#! /bin/bash../configure \
-prefix /home/user/toolchain/arm-linux-gnueabihf/arm-linux-gnueabihf/ \
-opensource \
-confirm-license \
-release \
-xplatform linux-arm-gnueabihf-g++ \
-make libs \
-nomake examples \
-nomake tools \
-nomake tests \
-no-opengl \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcharts \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdeclarative \
-skip qtdoc \
-skip qtgamepad \
-skip qtgraphicaleffects \
-skip qtimageformats \
-skip qtlocation \
-skip qtlottie \
-skip qtmacextras \
-skip qtmultimedia \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtquick3d \
-skip qtquickcontrols \
-skip qtquickcontrols2 \
-skip qtquicktimeline \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtserialbus \
-skip qtserialport \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtvirtualkeyboard \
-skip qtwayland \
-skip qtwebchannel \
-skip qtwebglplugin \
-skip qtwebsockets \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-xkbcommon \
-qpa xcb
-xcb

2.3、执行编译

./configure.sh
make && make install

执行配置脚本的结果

【ARM开发】交叉编译Qt源码之(4)添加xcb支持相关推荐

  1. linux环境下编译Qt源码

    环境配置:Ubuntu-16.04 1) 下载源码 在官方网站:http://download.qt.io/archive/qt/5.12/5.12.5/single/上下载qt-everywhere ...

  2. Orangepi3-lts 编译Qt源码

    Qt源码编译 环境选择 编译器说明 Qt源码版本与下载 configure选项 make编译 测试编译结果 问题记录 环境选择 这里说的环境包括开发板环境和编译系统环境.我用的是orangepi3-l ...

  3. Android录屏并利用FFmpeg转换成gif(二)交叉编译FFmpeg源码

    Android录屏并利用FFmpeg转换成gif(二) 写博客时经常会希望用一段动画来演示app的行为,目前大多数的做法是在电脑上开模拟器,然后用gif录制软件录制模拟器屏幕,对于非开发人员来讲这种方 ...

  4. QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数

    版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者"tingsking18"和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消 ...

  5. [QT_055]设置QT源码调试(qtc+vs/mingw+msvc)

    在开发过程中,我们经常用到调试功能,这样方便查找Bug:Qt是一个开源的框架,可以看到源码.虽然但大部分情况下,我们开发时,只是使用,并没有调试它的源码,但如果想深入了解Qt的一些机制原理,可以配置环 ...

  6. wp实例开发精品文章源码推荐

    qianqianlianmeng wp实例开发精品文章源码推荐 WP8 启动媒体应用         这个示例演示了如何选择正确的msAudioCategory类别的音像(AV)流来配置它作为一个音频 ...

  7. linux如何运行qt源码,Linux/Ubuntu下编译Qt4.8.2源码

    本人所用的系统为Ubuntu 14,所下载的QT源码版本为4.8.2. 以下是编译QT源码的基本步骤: 2.解压代码 输入指令: tar zxvf qt-everywhere-opensource-s ...

  8. uni-app开发:(源码级别)uni-badge样式修改(自定义插槽)

    文章目录 uni-app开发:(源码级别)uni-badge样式修改(自定义插槽) 一.效果图需求说明: 二.源码 · 修改前后对比: 2.1. 修改前 2.2. 修改后 三.调用代码: 附件:uni ...

  9. python开发直播网站_开发直播网站源码的三种计算机语言

    直播网站源码开发所用的语言,根据未来运营平台不同,其选择也不同.一般来说,如果是PC后台,那么会采用PHP语言编写,如果是在安卓上开发,则选择Java语言,如果是在iOS上开发,则采用object-c ...

  10. PHP开发h5棋牌源码curl用法

    PHP开发h5棋牌源码curl用法(aqiulian.com),更多PHPcurl用法咨询Q:212303635.curl 是使用URL语法的传送文件工具,支持FTP.FTPS.HTTP HTPPS ...

最新文章

  1. Elasticsearch根据条件进行删除索引命令
  2. Linux内核驱动之延时---内核超时处理【转】
  3. BZOJ3160:万径人踪灭
  4. python设置路径_Python探索之修改Python搜索路径
  5. 【Linux】一步一步学Linux——route命令(169)
  6. 为什么Python中整型不会溢出
  7. asp.net 使用Master模板页需要注意
  8. 祝贺JeecgBoot获评为2019年度最受欢迎中国开源软件
  9. spring + hibernate + mysql 事务不回滚
  10. jsp页面运行的步骤以及原理
  11. Log4j 配置的webAppRootKey参数问题
  12. Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片
  13. 《Go程序设计语言》- 第10章:包和go工具
  14. 中国历史上十大无名英雄
  15. h5让图片转圈的动效,让页面动起来
  16. sql sever 存储过程总结及实验
  17. 西安市商品住房销售公示平台和价格公示
  18. 常用的端口号有哪些?
  19. CSS中#号、.号、*号详解
  20. 计算机丢失ac1st.dll怎么找回,处理CAD系统错误win10中丢失ac1st16.dll的恢复方法

热门文章

  1. 推荐ietester工具 [ 光影人像 东海陈光剑 的博客 ]
  2. 关于 ZVT 的后期蜈蚣打发研究
  3. ASP.NET学习——导航条设计方案
  4. python从tushare获取数据_Python丨金融数据获取之tushare (下)
  5. 《生命如一泓清水》俞敏洪
  6. 使用cookie模拟登陆豆瓣影评
  7. 两个数组合成一个json对象_js把两个json数组根据相同键值合并成一个数组
  8. KMPlayer 双重字幕设置和配色方案
  9. java基础—输入/输出
  10. 【项目实例】使用C#开发纽曼USB来电通来电弹屏客户端小结