交叉编译libxcb与X11

  • 编译前提
    • 工具安装
  • 编译X11
    • 编译依赖项Xtrans
    • 编译依赖项xorgproto
    • XCB完成后编译X11
    • X11完成
  • 编译xcb
    • 编译依赖项xcb-proto
    • 编译依赖项libXau
    • 最后编译xcb
    • XCB完成
  • 扩展编译Xrandr
    • 编译依赖项util-macros
    • 编译依赖项Xrender
    • 编译依赖项Xext
    • 最后编译Xrandr
  • 编译xcb-util-renderutil
  • 编译xcb-util
  • 编译Xi
    • 编译依赖Xfixes
  • 编译Xdmcp
  • 编译pixman
  • 编译pciaccess
  • 编译xcb-util-image
  • 编译xcb-util-keysyms
  • 编译xcb-util-wm
  • 编译xev(可忽略项)
  • QT添加XCB支持
    • 前提
    • 编译
    • QT端源码配置
  • qt开启 -xkbcommon
    • 前提条件
    • 编译依赖xkeyboard-config
    • 最终编译xkbcommon
    • QT源码端配置
  • QT开启opengl支持
    • 安装相关软件包
    • 编译依赖libuuid
    • 编译python依赖expat
    • 编译Python3.8.6
    • 编译libxml2-2.9.10
    • 安装Xorg Libraries
    • 编译glfw
  • 最繁琐的一次,未完待续。。。

最近做边缘网关,有个显示设备,我这边QT做视频处理,都已经调好了。。。不过某些原因更换了镜像,使用了xcb方式,要使用fb就要干掉xwindow无奈只好重新编译qt加上xcb的支持,不过这货又要我去编译xcb它来链接,网上一大堆编译教程杂乱无比,只好自己动手丰衣足食。
QT端的配置可以直接去QT添加XCB支持那里开始看

编译前提

点我前往官网自己找

源码地址 更新日期
下载libxcb-1.14的源码 2020-02-22
下载libxcb-proto-1.14的源码 2020-02-22
下载libX11-1.6.9的源码 2020-07-31
下载xtrans-1.4.0的源码 2019-03-16

其他:

源码地址 更新日期
libXext-1.3.4 2019-03-16
libXdmcp-1.1.3 2019-03-16
libXau-1.0.9 2019-02-10
xorg-server-1.20.8 2020-03-29
makedepend-1.0.6 2019-03-16
xorg-cf-files-1.0.6 2015-12-22
util-macros-1.19.2 2018-03-05
imake-1.0.8 2019-03-16
xcursor-themes-1.0.6 2019-02-15
xorgproto-2020.1 2020-04-14
font/font-util-1.3.2 2019-08-25
mesa-20.1.5 opengl 2020-08-06
libdrm-2.4.102 2020-05-26
libXrender-0.9.10 2016-10-04
libXrandr-1.5.2 2019-03-16
xcb-util-renderutil-0.3.9 2014-06-13
xcb-util-0.4.0 2014-10-15
Xi-1.7.10 2019-06-19
Xfixes-5.0.3 2016-10-04
xev-1.2.4 2020-07-17
pixman-0.40.0 2020-04-19
pciaccess-0.16 2019-07-17
xcb-util-image-0.4.0 2014-10-15
xcb-util-keysyms-0.4.0 2014-10-01
xcb-util-wm-0.4.1 2014-02-19
xkeyboard-config-2.30 2020-06-02

工具安装

sudo apt install xsltproc pkg-config perl xmlto fop -y
sudo apt install libxrandr-dev -y

编译X11

  • 出现问题:X11/Xtrans/Xtrans.h: No such file or directory
    说明X11依赖Xtrans
  • 出现问题:X11/X.h: No such file or directory
    说明X11依赖xorgproto
  • 出现问题:xcb/xcb.h: No such file or directory
    说明X11依赖xcb
  • 编译选项中:–host=编译后的产物运行在何种系统类型 --build=使用何种系统类型上编译源码,设置参考--host=aarch64-linux-gnu --build=x86_64-pc-linux-gnu或者x86_64-linux-gnu

编译依赖项Xtrans

#进入源码配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

编译依赖项xorgproto

#进入源码配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking --enable-legacy
#编译
make
#切换为root,去安装
su
make install

XCB完成后编译X11

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ CFLAGS="-I/opt/X11_INSTALL/include -I/opt/XCB_INSTALL/include" LDFLAGS=-L/opt/XCB_INSTALL/lib ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking --enable-unix-transport --enable-tcp-transport --enable-ipv6 --enable-local-transport --enable-malloc0returnsnull
#编译
make
#切换为root,去安装
su
make install

X11完成

编译xcb

  • 出现问题:No package ‘xcb-proto’ found
    说明XCB依赖xcb-proto
  • 出现问题:X11/Xauth.h: No such file or directory
    说明XCB依赖libXau

编译依赖项xcb-proto

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/XCB_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

添加环境

sudo gedit ~/.bashrc
#文件尾部加入
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/XCB_INSTALL/lib/pkgconfig
#保存退出
source ~/.bashrc

编译依赖项libXau

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ CFLAGS=-I/opt/X11_INSTALL/include ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

最后编译xcb

官网查看相关编译选项和可生成的库的说明

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ CFLAGS=-I/opt/X11_INSTALL/include LDFLAGS=-L/opt/X11_INSTALL/lib ./configure --prefix=/opt/XCB_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

XCB完成

扩展编译Xrandr

依赖以下:

编译依赖项util-macros

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/XCB_INSTALL --host=arm-linux --enable-option-checking
#切换为root,去安装
su
make install

编译依赖项Xrender

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking --enable-malloc0returnsnull
#编译
make
#切换为root,去安装
su
make install

编译依赖项Xext

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking --enable-malloc0returnsnull
#编译
make
#切换为root,去安装
su
make install

最后编译Xrandr

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking --enable-malloc0returnsnull
#编译
make
#切换为root,去安装
su
make install

编译xcb-util-renderutil

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/XCB_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

编译xcb-util

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/XCB_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

编译Xi

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking --enable-malloc0returnsnull
#编译
make
#切换为root,去安装
su
make install

编译依赖Xfixes

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

编译Xdmcp

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ CFLAGS=-I/opt/X11_INSTALL/include ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

编译pixman

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

编译pciaccess

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

编译xcb-util-image

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ LDFLAGS="-L/opt/X11_INSTALL/lib -L/opt/XCB_INSTALL/lib -lXau -lxcb" ./configure --prefix=/opt/XCB_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

编译xcb-util-keysyms

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/XCB_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

编译xcb-util-wm

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/XCB_INSTALL --host=arm-linux --enable-option-checking
#切换为root,去安装
su
make install

编译xev(可忽略项)

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ LDFLAGS="-L/opt/X11_INSTALL/lib -L/opt/XCB_INSTALL/lib -lXau -lxcb -lXrender -lXext -lX11" ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

QT添加XCB支持

前提

我的qt源码版本:5.14.1
则需要的库文件如下:

源码地址 更新日期
xcb-util-image-0.3.9 2012-05-31
xcb-util-keysyms-0.3.9 2012-05-31
xcb-util-wm-0.3.9 2012-05-31
xcb-util-renderutil-0.3.9 2014-06-13
xcb-1.13 2018-03-05
xcb-proto-1.13 2018-03-05

这么简单?怎么可能还有一些依赖,复制粘贴吧不要一个个下载了

#!/bin/sh
wget -c https://www.x.org/releases/individual/xcb/xcb-util-image-0.3.9.tar.gz
wget -c https://www.x.org/releases/individual/xcb/xcb-util-keysyms-0.3.9.tar.gz
wget -c https://www.x.org/releases/individual/xcb/xcb-util-wm-0.3.9.tar.gz
wget -c https://www.x.org/releases/individual/xcb/xcb-util-renderutil-0.3.9.tar.gz
wget -c https://www.x.org/releases/individual/xcb/libxcb-1.13.tar.gz
wget -c https://www.x.org/releases/individual/xcb/xcb-proto-1.13.tar.gz
wget -c https://www.x.org/releases/individual/lib/libXau-1.0.9.tar.gz
wget -c https://www.x.org/releases/individual/proto/xorgproto-2020.1.tar.gz
wget -c https://www.x.org/releases/individual/xcb/xcb-util-0.3.9.tar.gz

根据下载的源码,查看需要编译的版本,这点很重要!

编译

编译过程上面就有自己找吧

QT端源码配置

  • 可以查看我的qt自动安装脚本
  • 增加两个库的链接 -lxcb -lXau
  • 按照脚本编译安装即可
    对于增加配置项,配置检测不过问题的排查
    如果配置项依赖外部库那么
    进入源码目录找到config.log文件寻找其中的
    undefined reference to xxx关键字查看它的编译指 链接指令 查找库的路径等是不是正确的

编译成功效果如下

qt开启 -xkbcommon

官网:https://www.xkbcommon.org/
库源码下载地址

前提条件

sudo apt install ninja meson -y

meson据说开始替代cmake,autogen有那么好吗
交叉编译用它还要写个文件,我的天,写就写吧.

编译依赖xkeyboard-config

#进入源码配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/X11_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换为root,去安装
su
make install

PS:配置选项中我禁用了X11,这货要求检查版本大于等于1.10,不过我用的最新的源码编译,出来的库是1.0.0我的问题还是它的问题,我估计是它的问题。

2021-10-26更新:建议参考评论区设置下pkgconfig变量,如遇错误同时看下错误日志,关于pkgconfig 解释
建议使用编译工具链的pkg文件路径:和xcb的安装目录下的pkg文件路径

最终编译xkbcommon

建立文件名为cross.txt

[binaries]
c = '/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc'
cpp = '/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++'
ar = '/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-ar'
strip = '/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-strip'
ld = '/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-ld'
#pkgconfig = 'aarch64-linux-gnu-pkg-config'[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'ARM'
endian = 'little'[build_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'i686'
endian = 'little'

在源码根目录执行以下命令

#配置
meson builddir/ --prefix /opt/TEST_INSTALL --buildtype release --cross-file cross.txt -Denable-x11=false -Denable-wayland=false -Denable-docs=false --libdir /opt/xkbcommon_INSTALL/lib
#编译安装
ninja -C builddir install

QT源码端配置

  • 配置项加上-xkbcommon
  • 配置项加上链接项 -L/opt/xkbcommon_INSTALL/lib
  • 配置项加上包含项 -I/opt/xkbcommon_INSTALL/include
  • 最后编译即可

以上步骤不对则编译qt会出现,找不到库文件的错误

ERROR: Feature ‘xkbcommon’ was enabled, but the pre-condition ‘libs.xkbcommon’ failed.

QT开启opengl支持

安装相关软件包

sudo apt install gperf util-linux

opengl仓库地址:ftp://ftp.freedesktop.org/pub/mesa
依赖项:util-linux-2.36可能不需要,先保留这里备用

源码地址 更新日期
Xorg Libraries 使用脚本安装
以下是运行脚本前需进行安装的
freetype-2.10.2 2020-05-09
fontconfig-2.13.1 2018-08-30
util-linux-2.36 2020-06-09
libuuid-1.0.3 2016-11-29
libxml2-2.9.10 2019/10/30
Python-3.8.6 2020-09-23
expat-2.2.9 2019-09-26
glu-9.0.1 2019-07-23
glut-7.9.2 2012-04-19
glw-8.0.0 2012-05-22
glfw-3.3.2 2020-01-20
mesa-20.2.1 2020-10-15
mesa-demos-8.4.0 2018-02-23

编译依赖libuuid

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/OPENGL_INSTALL --host=arm-linux --enable-option-checking
#编译
make
#切换权限,并安装
su
make install

编译python依赖expat

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/OPENGL_INSTALL --host=arm-linux --enable-option-checking --without-docbook
#编译
make
#切换权限,并安装
su
make install

编译Python3.8.6

#更新主机的python
sudo apt-get install python3.8 -y
#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ LDFLAGS=-L/opt/OPENGL_INSTALL/lib CFLAGS=-I/opt/OPENGL_INSTALL/include ./configure --prefix=/opt/PYTHON_INSTALL --host=aarch64-linux-gnu --build=x86_64-pc-linux-gnu --enable-option-checking --with-system-expat --with-system-ffi --with-ensurepip=yes --enable-shared --enable-ipv6 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no --with-system-expat -with-ensurepip=yes
#编译
make
#切换权限,并安装
su
make install

出现问题subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.
网上多数删除此lsb_release文件,不建议,容易出现其他问题

#暂时移动到其他目录
mv /usr/bin/lsb_release ../
#再次安装
make install
#恢复
mv ../lsb_release /usr/bin/

编译libxml2-2.9.10

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ./configure --prefix=/opt/OPENGL_INSTALL --host=arm-linux --enable-option-checking --with-history --with-python=/opt/PYTHON_INSTALL
#编译
make
#切换权限,并安装
su
make install

安装Xorg Libraries

建立下载地址列表,以下保存为:lib-7.md5

ce2fb8100c6647ee81451ebe388b17ad  xtrans-1.4.0.tar.bz2
55adbfb6d4370ecac5e70598c4e7eed2  libX11-1.6.9.tar.bz2
f5b48bb76ba327cd2a8dc7a383532a95  libXext-1.3.4.tar.bz2
4e1196275aa743d6ebd3d3d5ec1dff9c  libFS-1.0.8.tar.bz2
76d77499ee7120a56566891ca2c0dbcf  libICE-1.0.10.tar.bz2
87c7fad1c1813517979184c8ccd76628  libSM-1.2.3.tar.bz2
eeea9d5af3e6c143d0ea1721d27a5e49  libXScrnSaver-1.2.3.tar.bz2
a9019421d3ee8b4937b6afd9025f018a  libXt-1.2.0.tar.bz2
ac774cff8b493f566088a255dbf91201  libXmu-1.1.3.tar.bz2
6f0ecf8d103d528cfc803aa475137afa  libXpm-3.5.13.tar.bz2
e5e06eb14a608b58746bdd1c0bd7b8e3  libXaw-1.0.13.tar.bz2
07e01e046a0215574f36a3aacb148be0  libXfixes-5.0.3.tar.bz2
3fa0841ea89024719b20cd702a9b54e0  libXcomposite-0.4.5.tar.bz2
802179a76bded0b658f4e9ec5e1830a4  libXrender-0.9.10.tar.bz2
9b9be0e289130fb820aedf67705fc549  libXcursor-1.2.0.tar.bz2
e3f554267a7a04b042dc1f6352bd6d99  libXdamage-1.1.5.tar.bz2
6447db6a689fb530c218f0f8328c3abc  libfontenc-1.1.4.tar.bz2
00516bed7ec1453d56974560379fff2f  libXfont2-2.0.4.tar.bz2
4a433c24627b4ff60a4dd403a0990796  libXft-2.3.3.tar.bz2
62c4af0839072024b4b1c8cbe84216c7  libXi-1.7.10.tar.bz2
0d5f826a197dae74da67af4a9ef35885  libXinerama-1.1.4.tar.bz2
18f3b20d522f45e4dadd34afb5bea048  libXrandr-1.5.2.tar.bz2
5d6d443d1abc8e1f6fc1c57fb27729bb  libXres-1.2.0.tar.bz2
ef8c2c1d16a00bd95b9fdcef63b8a2ca  libXtst-1.2.3.tar.bz2
210b6ef30dda2256d54763136faa37b9  libXv-1.0.11.tar.bz2
3569ff7f3e26864d986d6a21147eaa58  libXvMC-1.0.12.tar.bz2
0ddeafc13b33086357cfa96fae41ee8e  libXxf86dga-1.1.5.tar.bz2
298b8fff82df17304dfdb5fe4066fe3a  libXxf86vm-1.1.4.tar.bz2
d2f1f0ec68ac3932dd7f1d9aa0a7a11c  libdmx-1.1.4.tar.bz2
b34e2cbdd6aa8f9cc3fa613fd401a6d6  libpciaccess-0.16.tar.bz2
dd7e1e946def674e78c0efbc5c7d5b3b  libxkbfile-1.1.0.tar.bz2
42dda8016943dc12aff2c03a036e0937  libxshmfence-1.3.tar.bz2

建立下载脚本:down.sh并添加可执行权限

#!/bin/sh
mkdir lib &&
cd lib &&
grep -v '^#' ../lib-7.md5 | awk '{print $2}' | wget -i- -c \-B https://www.x.org/pub/individual/lib/ &&
md5sum -c ../lib-7.md5

建立编译安装脚本:install.sh,修改为自己的安装路径和编译器,最后添加可执行权限

#!/bin/sh#设置安装目录
PREFIX_INSTALL=/opt/OPENGL_INSTALL#配置交叉编译
export CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
export CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
export CFLAGS="-I$PREFIX_INSTALL/include -I/opt/X11_INSTALL/include -I/opt/XCB_INSTALL/include -I/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/include"
export LDFLAGS="-L$PREFIX_INSTALL/lib -L/opt/X11_INSTALL/lib -L/opt/XCB_INSTALL/lib -L/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/lib"#XORG_CONFIG=$PREFIX_INSTALL
XORG_PREFIX=$PREFIX_INSTALL
ROOT_PATH=`pwd`#配置root权限
as_root()
{if   [ $EUID = 0 ];        then $*elif [ -x /usr/bin/sudo ]; then sudo $*else                            su -c \\"$*\\"fi
}#解压并配置安装
do_make(){cd $ROOT_PATH/libfor package in $(grep -v '^#' ../lib-7.md5 | awk '{print $2}')
dopackagedir=${package%.tar.bz2}tar -xf $package
#  pushd $packagedircd $packagedirdocdir="--docdir=$XORG_PREFIX/share/doc/$packagedir"case $packagedir inlibICE* )./configure $XORG_CONFIG $docdir ICE_LIBS=-lpthread \--prefix=$PREFIX_INSTALL --host=arm-linux;;libXfont2-[0-9]* )./configure $XORG_CONFIG $docdir --disable-devel-docs \--prefix=$PREFIX_INSTALL --host=arm-linux;;libXt-[0-9]* )./configure $XORG_CONFIG $docdir \--with-appdefaultdir=/etc/X11/app-defaults \--prefix=$PREFIX_INSTALL --host=arm-linux \--enable-malloc0returnsnull;;libSM-[0-9]*)./configure --prefix=$PREFIX_INSTALL --host=arm-linux \--enable-option-checkingecho "\033[1;33m make $package NOW\033[0m";;* )./configure $XORG_CONFIG $docdir --prefix=$PREFIX_INSTALL --host=arm-linux \--enable-malloc0returnsnullecho "\033[1;33m make other NOW\033[0m";;esacmakeif [ $? = 0 ]; then echo "\033[1;33m make $package ok\033[0m"else echo "\033[1;33m make $package error\033[0m"exitfi #make check 2>&1 | tee ../$packagedir-make_check.logas_root make install
#  popdcd -rm -rf $packagediras_root /sbin/ldconfig
done
}#编译依赖项
do_make_dependencies()
{cd $ROOT_PATH#下载源码mkdir depend_lib &&cd depend_lib &&wget -c https://download.savannah.gnu.org/releases/freetype/freetype-2.10.2.tar.gz &&wget -c https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.13.1.tar.bz2 &&wget -c https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.36/util-linux-2.36.tar.gz &&tar -xf util-linux-2.36.tar.gz &&tar -xf fontconfig-2.13.1.tar.bz2 &&tar -xf freetype-2.10.2.tar.gz &&cd freetype-2.10.2 &&sed -ri "s:.*(AUX_MODULES.*valid):\1:" modules.cfg &&sed -r "s:.*(#.*SUBPIXEL_RENDERING) .*:\1:" \-i include/freetype/config/ftoption.h  &&./configure --prefix=$PREFIX_INSTALL --host=arm-linux --enable-freetype-config --disable-static &&makeas_root make install &&cd ..cd util-linux-2.36 &&./configure --prefix=$PREFIX_INSTALL --host=arm-linux \--enable-option-checking \--without-python \--without-tinfo \--without-ncursesw \ --without-ncursesmake -j4as_root make installcd ..cd fontconfig-2.13.1 &&#Make sure the system regenerates src/fcobjshash.hrm -f src/fcobjshash.h./configure --prefix=$PREFIX_INSTALL \--host=aarch64-linux-gnu \--sysconfdir=/etc \--localstatedir=/var \--enable-libxml2 \--disable-docs &&     makeas_root make installcd $ROOT_PATH
}
#编译依赖项
do_make_dependencies
#编译主体
do_makeexit

终端中执行以下命令

#下载原码
./down.sh
#编译安装源码
./install.sh

编译glfw

#配置
CC=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/usr/local/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ cmake -DCMAKE_INSTALL_PREFIX=/opt/OPENGL_INSTALL -DCMAKE_C_FLAGS="-L/opt/X11_INSTALL/lib -L/opt/OPENGL_INSTALL/lib -L/opt/XCB_INSTALL/lib -I/opt/X11_INSTALL/include -I/opt/OPENGL_INSTALL/include -I/opt/XCB_INSTALL/include -lxcb -lXau -lm" ..
#编译
make
#切换权限,并安装
su
make install

最繁琐的一次,未完待续。。。

交叉编译libxcb与X11相关推荐

  1. 15、交叉编译pango

    15.交叉编译pango 目标平台:LOONGSON-1B开发板 内核:Linux 3.0 编译平台:ubuntu10.04 交叉工具链:gcc-3.4.6-2f 一.简介 Pango(Παν语)是一 ...

  2. linux+arm+移除X11,关于ARM GTK/X11的问题,懂的指点一下

    提供简要移植(交叉编译)过程 以编译arm11架构处理器为列 1)   下载并安装scratchbox 连接:h t t p://www.scratchbox.org/ 以上网的文档里有教程也有相关下 ...

  3. X11VNC交叉编译

    X11VNC交叉编译(方案未成功) 介绍 一.编译libXext(libxext_1.3.4.orig.tar.gz) 二.编译libXdmcp(libxdmcp_1.1.3.orig.tar.gz) ...

  4. 银河麒麟V10系统+飞腾CPU交叉编译安装Qt-5.15.2

    银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2 一.准备工作 1.下载qt源码包 下载网址:https://download.qt.io/archive/qt/ 在任意空闲位置新建文件夹,并 ...

  5. 交叉编译libX11

    0 前言 本文探索如何将libX11移植到ARM开发板. 1 源码 从参考资料[1]或这里下载相关源码,本文下载源码为:libX11-1.6.10.tar.gz 解压源码包: tar -zxvf li ...

  6. 在redhat9中交叉编译nano-X nxlib和fltk

    来自:http://tauruspdj.blog.163.com/blog/static/4312500620080279183197/ 1)编译nano-X(即microwindows-0.91) ...

  7. ubuntu 交叉编译 armv7_32 ffmpeg x264(已完成)

    文章目录 1.交叉编译x264(x264要先编译,因为到时编译ffmpeg时要用到x264的头文件和库) 2.接着我们编译ffmpeg FFmpeg和X264的交叉编译环境 arm linux交叉编译 ...

  8. 用Crossdev安装MIPS交叉编译工具链

    例如执行这样的安装命令: crossdev -S --ex-gdb --without-headers -t mipsel-unknown-linux-gnu 首先,修改/etc/make.conf文 ...

  9. 交叉编译xorg-server

    交叉编译xorg-server 一.编译xorg-macros(xorg-macros-util-macros-1.19.1.tar.gz) 二.编译libfontenc(libfontenc_1.1 ...

  10. Qt 5.15.7 arm交叉编译+tslib-1.22+openssl-3.0.7+alse-1.2.8

    ubuntu Qt arm64交叉编译 tslib是一个用于触摸屏设备的开源函数库 ALSA为声卡提供的驱动组件 文章目录 ubuntu Qt arm64交叉编译 准备环境 编译tslib-1.22 ...

最新文章

  1. Ruby --- gem(RubyGems)安装与使用
  2. 第四范式入选CB Insights首届中国金融科技榜单
  3. mysql 重复率高字段 索引_MySQL性能优化(二)索引优化
  4. ADO.NET Entity Framework学习笔记(2)建模[转]
  5. 2015蓝桥杯省赛---java---B---3(三羊献瑞)
  6. vue 模板 html 表达式,Vue 模板template、指令directive、修饰符
  7. ElasticSearch基本查询一(英文分词)
  8. python输入一个序列_Python序列合并,python
  9. 工程电磁场matlab仿真,带电粒子在电磁场中运动的MATLAB仿真.doc
  10. 【资源】机器学习 周志华
  11. Git对G码云上项目的上传及同步
  12. 天气预报小程序 微信小程序期末大作业(含文档)
  13. iOS Charts库绘制曲线
  14. 史上最全vue优化方案
  15. 64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场?
  16. word转pdf出现错误 解决方法
  17. 使用FTP协议的服务,包括匿名用户验证访问,用户验证访问,虚拟用户验证访问等
  18. Vue富文本编辑器vue-quill-editor-使用-bug问题-教程
  19. 代驾小程序源码开发这3大功能不可少
  20. 单音信号对载波信号进行双边带幅度调制

热门文章

  1. android 获取图片信息 之 ExifInterface
  2. nc命令应用场景及使用
  3. 【转】个性化二级域名Nginx配置
  4. “Four golden lessons” by Steven Weinberg
  5. 如何将360全景图导出高清短视频分享到视频平台上?
  6. 谁吃土的时候没有受过委屈?
  7. 计算机视觉与机器学习之6σ问题
  8. html手机支付案例,实例讲述Ecshop实现的支付宝手机网页支付功能
  9. vue elementui 表格数据 时间格式转换
  10. U8glib如何显示中文