libdrm(一)交叉编译移植

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库

参考
https://blog.youkuaiyun.com/qq_41795122/article/details/128132261?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-128132261-blog-122540134.235%5Ev43%5Econtrol&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-128132261-blog-122540134.235%5Ev43%5Econtrol

交叉编译libdrm是将libdrm库在台计算机上编译成为可在另台不同体系结构的计算机上运行的目标文件。它通常用于在开发嵌入式系统或跨平台应用程序时。 首先,我们需要了解目标计算机的体系结构和操作系统。然后,我们需要配置交叉编译工具链,以便在本地计算机上编译适用于目标计算机的程序。 接下来,我们需要下载libdrm的源代码。你可以从官方网站或开源代码存储库获取最新的稳定版本。解压缩源代码后,进入源代码目录。 配置交叉编译选项是很重要的步。我们可以使用configure脚本来自动配置编译选项。但在交叉编译情况下,我们需要指定目标体系结构和交叉工具链的路径。例如,对于ARM体系结构的目标计算机,我们可以使用以下命令进行配置: ./configure --host=arm-linux-gnueabi --prefix=/path/to/target 其中,--host选项指定了目标体系结构和操作系统。--prefix选项指定了安装路径,即在目标计算机上安装libdrm库文件的位置。 配置完成后,我们可以使用make命令进行编译。交叉编译的关键是指定正确的编译器和工具链,以便将源代码编译为目标体系结构的二进制文件。 make CC=arm-linux-gnueabi-gcc 其中,CC选项指定了交叉编译器的名称。 编译完成后,我们可以使用make install命令将编译好的库文件安装到目标计算机上。 make install 在安装完成后,你可以将生成的目标文件复制到目标计算机上,并在应用程序中使用该库。 总而言之,交叉编译libdrm需要配置正确的交叉编译选项,并使用交叉编译工具链来编译源代码。通过这种方式,我们可以将libdrm库编译为可在不同体系结构的计算机上运行的目标文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值