最近做边缘网关,有个显示设备,我这边QT做视频处理,都已经调好了。。。不过某些原因更换了镜像,使用了xcb方式,要使用fb就要干掉xwindow无奈只好重新编译qt加上xcb的支持,不过这货又要我去编译xcb它来链接,网上一大堆编译教程杂乱无比,只好自己动手丰衣足食。
QT端的配置可以直接去QT添加XCB支持那里开始看
编译前提
点我前往官网自己找
其他:
工具安装
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
则需要的库文件如下:
这么简单?怎么可能还有一些依赖,复制粘贴吧不要一个个下载了
#!/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可能不需要,先保留这里备用
编译依赖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/lib
for package in $(grep -v '^#' ../lib-7.md5 | awk '{print $2}')
do
packagedir=${package%.tar.bz2}
tar -xf $package
# pushd $packagedir
cd $packagedir
docdir="--docdir=$XORG_PREFIX/share/doc/$packagedir"
case $packagedir in
libICE* )
./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-checking
echo "\033[1;33m make $package NOW\033[0m"
;;
* )
./configure $XORG_CONFIG $docdir --prefix=$PREFIX_INSTALL --host=arm-linux \
--enable-malloc0returnsnull
echo "\033[1;33m make other NOW\033[0m"
;;
esac
make
if [ $? = 0 ]; then
echo "\033[1;33m make $package ok\033[0m"
else
echo "\033[1;33m make $package error\033[0m"
exit
fi
#make check 2>&1 | tee ../$packagedir-make_check.log
as_root make install
# popd
cd -
rm -rf $packagedir
as_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 &&
make
as_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-ncurses
make -j4
as_root make install
cd ..
cd fontconfig-2.13.1 &&
#Make sure the system regenerates src/fcobjshash.h
rm -f src/fcobjshash.h
./configure --prefix=$PREFIX_INSTALL \
--host=aarch64-linux-gnu \
--sysconfdir=/etc \
--localstatedir=/var \
--enable-libxml2 \
--disable-docs &&
make
as_root make install
cd $ROOT_PATH
}
#编译依赖项
do_make_dependencies
#编译主体
do_make
exit
终端中执行以下命令
#下载原码
./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
最繁琐的一次,未完待续。。。