这里写目录标题
1、meson安装
sudo apt-get install meson
2、Ninja安装
wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip
sudo unzip ninja-linux.zip -d /usr/local/bin/
sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force
/usr/bin/ninja --version
3、 编译
3.1、libdrm下载
https://dri.freedesktop.org/libdrm/
3.2、解压
$ tar -xf libdrm-2.4.99.tar.xz
3.3、进入主目录、创建目录
$ cd libdrm-2.4.99/
$ mkdir build //创建安装目录
$ mkdir install //创建编译目录
3.4、创建并编写cross_file.txt文件,用于配置交叉编译环境
[binaries]
c = 'aarch64-linux-gnu-gcc'
cpp = 'aarch64-linux-gnu-g++'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'cortex-a55'
endian = 'little'
[build_machine]
system = 'linux'
cpu_family = 'x86_64
3.5、meson配置
$ cd build
$ meson --prefix=$(pwd)/../install --cross-file=../cross_file.txt -D amdgpu=false \
-D cairo-tests=false -D etnaviv=false -D exynos=true -D freedreno=false \
-D freedreno-kgsl=false -D install-test-programs=true -D intel=false \
-D libkms=false -D man-pages=false -D nouveau=false -D omap=false \
-D radeon=false -D tegra=false -D udev=false -D valgrind=false -D vc4=false \
-D vmwgfx=false
3.6、编译并安装
$ ninja && ninja install
3.7、问题
问题1、“/lib/ld-linux-aarch64.so.1: no such file or directory
sudo ln -s /path/to/actual/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1
将 /path/to/actual/ld-linux-aarch64.so.1 替换为实际的文件路径。
问题2
权限不够,加sudo
$ sudo meson --prefix=$(pwd)/../install --cross-file=../cross_file.txt -D amdgpu=false \
-D cairo-tests=false -D etnaviv=false -D exynos=true -D freedreno=false \
-D freedreno-kgsl=false -D install-test-programs=true -D intel=false \
-D libkms=false -D man-pages=false -D nouveau=false -D omap=false \
-D radeon=false -D tegra=false -D udev=false -D valgrind=false -D vc4=false \
-D vmwgfx=false
4、移植
移植一
将build目录下的libdrm.so.2和libdrm.so.2.4.0,libdrm.so
库放到我们根文件系统对应的库文件存放目录即可,注意软链接,最好压缩成包的形式拷贝到系统中,再解压后复制,使用cp -rfd
进行拷贝
移植二
编译完成之后,会在install目录下生成三个文件夹
将include和lib文件夹移植到自己的项目中,并且在Makefile中添加路径即可使用DRM库