glib交叉编译

glib是一个功能强大的C语言库,广泛应用于软件开发中。它提供了许多核心功能,如数据结构、线程管理、事件循环和实用工具函数,是GNOME项目的基础组件,同时也被许多其他项目(如GTK+、GStreamer和D-Bus)所依赖。glib的设计目标是提供跨平台的抽象层,使开发者能够编写可在不同操作系统上运行的代码。
交叉编译是一种特殊的编译技术,允许开发者在一个平台(宿主机)上编译出可在另一个平台(目标机)上运行的二进制文件。这对于嵌入式系统、移动设备或其他架构(如ARM、MIPS)的开发尤为重要。本文将详细介绍如何交叉编译glib,包括glib的简介、安装步骤以及一些关键的注意事项,帮助您成功地在目标平台上部署glib。

准备工作

在开始交叉编译之前,您需要准备以下工具和环境:

1. Ubuntu或其他Linux系统(本教程基于Ubuntu18.04)

2. 交叉工具编译链(本教程为aarch64-linux-gnu)

        下载地址:aarch64-linux-gnu

3. 安装较新版本的meson:>=0.60(本教程为0.61.5),安装命令:

pip3 install meson

4. git工具,安装命令:

sudo apt install git

5. glib源码(本教程基于V2.68.0版本进行编译安装):

安装步骤

以下是交叉编译 gLib 的具体步骤,以aarch64架构为例):

1. 拉取glib源代码

git clone https://gitlab.gnome.org/GNOME/glib.git

cd glib

git checkout 2.68.0

2. 配置交叉编译

编写交叉编译的配置文件:这里使用 aarch64-linux-gnu-gcc 工具链

在glib目录创建配置文件:cross_file_aarch.txt,内容如下

[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'aarch64'
endian = 'little'

[properties]
c_args = []
c_link_args = []

[binaries]
c = 'aarch64-linux-gnu-gcc'
cpp = 'aarch64-linux-gnu-g++'
ar = 'aarch64-linux-gnu-ar'
ld = 'aarch64-linux-gnu-ld'
objcopy = 'aarch64-linux-gnu-objcopy'
strip = 'aarch64-linux-gnu-strip'
pkgconfig = 'aarch64-linux-gnu-pkg-config'

如果你是编译arm架构的glib,请把cpu_family及cpu的值改为arm

3.pkgconfig安装

由于下载的编译环境中不包含 aarch64-linux-gnu-pkg-config ,需要手动在Ubuntu环境下进行安装:

sudo apt install pkg-config-aarch64-linux-gnu

4.配置环境变量

下载并解压 aarch64 交叉编译工具链(本教程解压在/work/tools/目录中),然后配置环境变量

①临时环境变量配置

export PATH=$PATH:/work/tools/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin

如果使用这种方式配置,需要确保后面的编译安装都在此终端执行。

②永久环境变量配置

修改 /etc/profile文件,后面添加

export PATH=$PATH:/work/tools/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin

然后执行 source /etc/profile 使能环境变量。 

5.编译安装

①在终端进入glib目录(我这里将glib以放在home目录下为例),在glib目录中执行:

meson --prefix=~/glib/install --cross-file cross_file_aarch.txt builddir

注意事项:

  • --prefix=~/glib/install 是 glib 生成的 lib 库的 install 的目录,因为是交叉编译编译,不能直接安装到PC 系统的目录下,需要实际指定自定以目录;
  • --cross-file cross_file_aarch6.txt 是上面创建的 meson 交叉编译的配置文件;
  • 过程中会自动下载libffi、zlib库等依赖库,请耐心等待下载完成(最好有科学上网环境)。

②编译glib源码

ninja -C builddir

builddir 就是一个目录,用于存放编译的文件

③安装glib

ninja -C builddir install

安装完成后,安装的文件在指定的prefix目录(~/glib/install):

 

  • bin:存放可执行文件和脚本。
  • lib:存放glib以及依赖的libffi、libz等库文件。
  • include:存放头文件(.h),这些文件包含函数、类等的声明,是编译时需要引用的接口文件。
  • share:存放与平台无关的共享资源,比如文档、配置文件、示例代码或其他数据文件。

自此,glib的编译安装完成,希望这篇教程能为您的项目提供实用指导!

参考资料 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值