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版本进行编译安装):
- gitlab官方拉取:https://gitlab.gnome.org/GNOME/glib.git
- github下载:https://github.com/GNOME/glib.git
安装步骤
以下是交叉编译 gLib 的具体步骤,以aarch64架构为例):
1. 拉取glib源代码
git clone https://gitlab.gnome.org/GNOME/glib.gitcd 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的编译安装完成,希望这篇教程能为您的项目提供实用指导!
参考资料
- GLib 官方文档:https://developer.gnome.org/glib/

2万+

被折叠的 条评论
为什么被折叠?



