【ARM开发】交叉编译Qt源码之(4)添加xcb支持
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支持相关推荐
- linux环境下编译Qt源码
环境配置:Ubuntu-16.04 1) 下载源码 在官方网站:http://download.qt.io/archive/qt/5.12/5.12.5/single/上下载qt-everywhere ...
- Orangepi3-lts 编译Qt源码
Qt源码编译 环境选择 编译器说明 Qt源码版本与下载 configure选项 make编译 测试编译结果 问题记录 环境选择 这里说的环境包括开发板环境和编译系统环境.我用的是orangepi3-l ...
- Android录屏并利用FFmpeg转换成gif(二)交叉编译FFmpeg源码
Android录屏并利用FFmpeg转换成gif(二) 写博客时经常会希望用一段动画来演示app的行为,目前大多数的做法是在电脑上开模拟器,然后用gif录制软件录制模拟器屏幕,对于非开发人员来讲这种方 ...
- QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者"tingsking18"和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消 ...
- [QT_055]设置QT源码调试(qtc+vs/mingw+msvc)
在开发过程中,我们经常用到调试功能,这样方便查找Bug:Qt是一个开源的框架,可以看到源码.虽然但大部分情况下,我们开发时,只是使用,并没有调试它的源码,但如果想深入了解Qt的一些机制原理,可以配置环 ...
- wp实例开发精品文章源码推荐
qianqianlianmeng wp实例开发精品文章源码推荐 WP8 启动媒体应用 这个示例演示了如何选择正确的msAudioCategory类别的音像(AV)流来配置它作为一个音频 ...
- linux如何运行qt源码,Linux/Ubuntu下编译Qt4.8.2源码
本人所用的系统为Ubuntu 14,所下载的QT源码版本为4.8.2. 以下是编译QT源码的基本步骤: 2.解压代码 输入指令: tar zxvf qt-everywhere-opensource-s ...
- uni-app开发:(源码级别)uni-badge样式修改(自定义插槽)
文章目录 uni-app开发:(源码级别)uni-badge样式修改(自定义插槽) 一.效果图需求说明: 二.源码 · 修改前后对比: 2.1. 修改前 2.2. 修改后 三.调用代码: 附件:uni ...
- python开发直播网站_开发直播网站源码的三种计算机语言
直播网站源码开发所用的语言,根据未来运营平台不同,其选择也不同.一般来说,如果是PC后台,那么会采用PHP语言编写,如果是在安卓上开发,则选择Java语言,如果是在iOS上开发,则采用object-c ...
- PHP开发h5棋牌源码curl用法
PHP开发h5棋牌源码curl用法(aqiulian.com),更多PHPcurl用法咨询Q:212303635.curl 是使用URL语法的传送文件工具,支持FTP.FTPS.HTTP HTPPS ...
最新文章
- Elasticsearch根据条件进行删除索引命令
- Linux内核驱动之延时---内核超时处理【转】
- BZOJ3160:万径人踪灭
- python设置路径_Python探索之修改Python搜索路径
- 【Linux】一步一步学Linux——route命令(169)
- 为什么Python中整型不会溢出
- asp.net 使用Master模板页需要注意
- 祝贺JeecgBoot获评为2019年度最受欢迎中国开源软件
- spring + hibernate + mysql 事务不回滚
- jsp页面运行的步骤以及原理
- Log4j 配置的webAppRootKey参数问题
- Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片
- 《Go程序设计语言》- 第10章:包和go工具
- 中国历史上十大无名英雄
- h5让图片转圈的动效,让页面动起来
- sql sever 存储过程总结及实验
- 西安市商品住房销售公示平台和价格公示
- 常用的端口号有哪些?
- CSS中#号、.号、*号详解
- 计算机丢失ac1st.dll怎么找回,处理CAD系统错误win10中丢失ac1st16.dll的恢复方法