交叉编译libxcb与X11
交叉编译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相关推荐
- 15、交叉编译pango
15.交叉编译pango 目标平台:LOONGSON-1B开发板 内核:Linux 3.0 编译平台:ubuntu10.04 交叉工具链:gcc-3.4.6-2f 一.简介 Pango(Παν语)是一 ...
- linux+arm+移除X11,关于ARM GTK/X11的问题,懂的指点一下
提供简要移植(交叉编译)过程 以编译arm11架构处理器为列 1) 下载并安装scratchbox 连接:h t t p://www.scratchbox.org/ 以上网的文档里有教程也有相关下 ...
- X11VNC交叉编译
X11VNC交叉编译(方案未成功) 介绍 一.编译libXext(libxext_1.3.4.orig.tar.gz) 二.编译libXdmcp(libxdmcp_1.1.3.orig.tar.gz) ...
- 银河麒麟V10系统+飞腾CPU交叉编译安装Qt-5.15.2
银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2 一.准备工作 1.下载qt源码包 下载网址:https://download.qt.io/archive/qt/ 在任意空闲位置新建文件夹,并 ...
- 交叉编译libX11
0 前言 本文探索如何将libX11移植到ARM开发板. 1 源码 从参考资料[1]或这里下载相关源码,本文下载源码为:libX11-1.6.10.tar.gz 解压源码包: tar -zxvf li ...
- 在redhat9中交叉编译nano-X nxlib和fltk
来自:http://tauruspdj.blog.163.com/blog/static/4312500620080279183197/ 1)编译nano-X(即microwindows-0.91) ...
- ubuntu 交叉编译 armv7_32 ffmpeg x264(已完成)
文章目录 1.交叉编译x264(x264要先编译,因为到时编译ffmpeg时要用到x264的头文件和库) 2.接着我们编译ffmpeg FFmpeg和X264的交叉编译环境 arm linux交叉编译 ...
- 用Crossdev安装MIPS交叉编译工具链
例如执行这样的安装命令: crossdev -S --ex-gdb --without-headers -t mipsel-unknown-linux-gnu 首先,修改/etc/make.conf文 ...
- 交叉编译xorg-server
交叉编译xorg-server 一.编译xorg-macros(xorg-macros-util-macros-1.19.1.tar.gz) 二.编译libfontenc(libfontenc_1.1 ...
- 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 ...
最新文章
- Ruby --- gem(RubyGems)安装与使用
- 第四范式入选CB Insights首届中国金融科技榜单
- mysql 重复率高字段 索引_MySQL性能优化(二)索引优化
- ADO.NET Entity Framework学习笔记(2)建模[转]
- 2015蓝桥杯省赛---java---B---3(三羊献瑞)
- vue 模板 html 表达式,Vue 模板template、指令directive、修饰符
- ElasticSearch基本查询一(英文分词)
- python输入一个序列_Python序列合并,python
- 工程电磁场matlab仿真,带电粒子在电磁场中运动的MATLAB仿真.doc
- 【资源】机器学习 周志华
- Git对G码云上项目的上传及同步
- 天气预报小程序 微信小程序期末大作业(含文档)
- iOS Charts库绘制曲线
- 史上最全vue优化方案
- 64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场?
- word转pdf出现错误 解决方法
- 使用FTP协议的服务,包括匿名用户验证访问,用户验证访问,虚拟用户验证访问等
- Vue富文本编辑器vue-quill-editor-使用-bug问题-教程
- 代驾小程序源码开发这3大功能不可少
- 单音信号对载波信号进行双边带幅度调制