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

2 篇文章 0 订阅

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 = sublib

include(../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

执行配置脚本的结果

 

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值