下载及交叉编译glib,记录

下载及交叉编译glib,记录

编译参见这篇博客

嵌入式arm交叉编译移植bluez5.0最新教程_bluez移植-CSDN博客

编译命令有更新:

make -j4 CFLAGS="-Wno-format-overflow"

glib库的作用:

glib 是 GNOME 项目下的一个基础库,但实际上它不仅仅服务于 GNOME,它提供了很多 Linux/Unix 下通用的底层功能。它的作用可以总结为几个方面:


1、数据结构与工具函数

  • 提供 动态数组(GArray)、链表(GList)、哈希表(GHashTable)、字符串工具(GString) 等数据结构。

  • 包含许多 内存管理、错误处理、文件操作、字符串处理 的通用函数。

  • 让开发者无需重复造轮子,提高开发效率。


2、事件循环与异步支持

  • 提供 GMainLoop / GMainContext / GSource,可以管理事件循环,处理定时器、IO、信号等异步事件。

  • GTK、BlueZ 等多线程或异步程序的核心依赖


3、跨平台抽象

  • 抽象了很多平台差异,使程序 可在 Linux、Windows、macOS 等平台移植

  • 包含线程(GThread)、原子操作(GAtomic)、定时器、互斥锁等跨平台 API。


4、类型系统与对象系统(GObject)

  • GObject 是 GLib 提供的对象系统,支持:

    • 类和对象

    • 信号与回调

    • 属性系统

  • 很多 GNOME 应用和库(如 GTK、GStreamer)都基于 GObject 构建。


5、国际化与工具支持

  • 字符编码转换(GConvert)、本地化支持(gettext 集成)

  • 配置文件、路径查找等工具函数

1、下载 GLib 源码

可以从 GNOME 官方或者源码镜像下载稳定版本,例如 2.76.x:

wget https://download.gnome.org/sources/glib/2.76/glib-2.76.3.tar.xz tar xf glib-2.76.3.tar.xz cd glib-2.76.3

2、安装依赖

GLib 依赖 zliblibffi 和一个可用的 Python 环境(用于 gobject-introspection,可选)。如果你已经交叉编译好了 zlib 和 libffi,就可以直接使用它们。


3、设置交叉编译环境
export CC=arm-v01c02-linux-musleabi-gcc 
export AR=arm-v01c02-linux-musleabi-ar 
export RANLIB=arm-v01c02-linux-musleabi-ranlib 
export STRIP=arm-v01c02-linux-musleabi-strip # 设置交叉编译 sysroot(zlib、libffi 等依赖所在路径) 
export SYSROOT=/home/zhs/tools/blue_2/sysroot export PKG_CONFIG_PATH=$SYSROOT/usr/lib/pkgconfig:$SYSROOT/usr/share/pkgconfig export PKG_CONFIG_LIBDIR=$SYSROOT/usr/lib/pkgconfig export PKG_CONFIG_SYSROOT_DIR=$SYSROOT

注意:你必须把之前交叉编译的 zlib/libffi 安装到 $SYSROOT/usr,这样 GLib 才能找到。


4、生成构建目录

建议使用 独立构建目录

mkdir -p build_arm cd build_arm

5、配置 GLib

GLib 2.x 使用 Meson 构建系统(新版本),旧版本 2.45 之前用 autotools。这里以 Meson 为例:

meson setup \
--prefix=/home/zhs/tools/blue_2/glib-arm-install \
--cross-file=arm-cross.txt \
builddir

arm-cross.txt 示例(Meson 交叉文件)

 
[binaries] c = '/home/zhs/tools/blue_2/toolchain/arm-v01c02-linux-musleabi-gcc' ar = '/home/zhs/tools/blue_2/toolchain/arm-v01c02-linux-musleabi-ar' strip = '/home/zhs/tools/blue_2/toolchain/arm-v01c02-linux-musleabi-strip' [properties] sys_root = '/home/zhs/tools/blue_2/sysroot' [host_machine] system = 'linux' cpu_family = 'arm' cpu = 'armv7' # 根据你的目标 CPU 调整 endian = 'little'

6、编译 & 安装
meson compile -C build_arm meson install -C build_arm

安装完成后,你会在 /home/zhs/tools/blue_2/glib-arm-install 下得到:

 
bin/ # 可执行工具 lib/ # libglib-2.0.a / .so include/ # 头文件 share/ # pkgconfig

7、编译提示
  • 确保 zlib/libffi 已经交叉编译并在 PKG_CONFIG_PATH

    Meson 会检查 pkg-config,确保交叉库的 .pc 文件可用旧版本 GLib(2.45 之前)用 ./configure,交叉编译方法类似 zlib:设置 CC/AR/RANLIB 并指定 --prefix

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93157.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从 0 到 1 玩转Claude code(蓝耘UI界面版本):AI 编程助手的服务器部署与实战指南

前言 蓝耘 Coding UI 作为基于 Claude Code 的可视化工具,凭借对本地项目的深度掌控、与 Git 仓库的无缝衔接以及直观的交互界面,正在重构开发者的工作流。本文将带你一步步完成从环境搭建到实战使用的全流程,让这款工具真正成为你的编程「副…

docker使用指定的MAC地址启动podman使用指定的MAC地址启动

docker指定固定的mac地址 1】创建自定义桥接网络并配置 MAC 地址保留 docker network create --driver bridge custom_bridge2】启动容器并指定使用自定义网络 docker run -it --name your-container --network custom_bridge --mac-address 02:42:ac:11:00:02 your-image--mac…

抽奖程序web程序

使用html实现抽奖程序&#xff0c;没有后台&#xff0c;如果需要后续写个后台可以配置&#xff0c;没有过多的介绍&#xff0c;看代码吧 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><title>婚礼抽奖</…

【Python办公】Excel转json(极速版)-可自定义累加字段(如有重复KEY)

目录 专栏导读 🎯 亮点特性 ⚙️ 安装与运行 🖥️ 界面与区域说明 🚀 使用示例 💡 使用建议 ❓ 常见问题(FAQ) 🧱 技术要点 完整代码 🏁 结语 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——…

JavaScript 防抖(Debounce)与节流(Throttle)

在 JavaScript 前端开发中&#xff0c;处理高频率事件&#xff08;如窗口调整、输入框输入、页面滚动&#xff09;时&#xff0c;如果不加以控制&#xff0c;会导致性能问题&#xff0c;如页面卡顿或资源浪费。防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle…

探索无人机图传技术:创新视野与无限可能

近年来&#xff0c;无人机技术的飞速发展不仅改变了航空行业的格局&#xff0c;还深刻影响了多个领域的日常运作。无人机图传技术作为无人机的核心技术之一&#xff0c;凭借其精准的图像传输能力和高效的远程操作特性&#xff0c;正在成为各行各业的得力助手。从空中拍摄到实时…

Comfyui进入python虚拟环境

如果你的 Python 可执行文件&#xff08;python.exe&#xff09;位于 C:\comfyui\.venv\Scripts&#xff0c;那么 .venv 本身已经是一个虚拟环境&#xff0c;你只需要 激活它&#xff0c;而无需再创建一个新的虚拟环境。如何激活这个已有的虚拟环境&#xff1f; 1. 打开终端&am…

秋招春招实习百度笔试百度管培生笔试题库百度非技术岗笔试|笔试解析和攻略|题库分享

笔试介绍 百度非技术岗笔试采用的是规定时间统一笔试形式&#xff0c;管培生会有两场考试分别是7月底和8月中旬&#xff0c;其他非技术类岗位一般在8月中旬开始。 行测题必考&#xff0c;有些岗位考简答题&#xff0c;比如管培生以及产品经理等岗位。 笔试内容 笔试内容一…

低资源语言翻译:数据增强与跨语言迁移学习策略

文章目录一、低资源语言翻译的挑战1.1 数据稀缺性1.2 语言特性复杂1.3 评估困难二、数据增强策略&#xff08;Data Augmentation&#xff09;2.1 基于单语数据的增强2.2 基于平行数据的增强2.3 多模态数据增强三、跨语言迁移学习策略&#xff08;Cross-Lingual Transfer Learni…

【每天一个知识点】时间序列聚类

一、什么是时间序列聚类&#xff1f;如果把数据比作一本书&#xff0c;那么时间序列&#xff08;Time Series&#xff09;就是一本按时间顺序记录事件的日记。它可能是股票每天的价格波动、某台机器的温度曲线、一个城市的空气质量变化&#xff0c;甚至是人的心电信号。时间序列…

对抗损失(GAN)【生成器+判断器】

这个是啥呢&#xff0c;搞图片生成用的。我搜了下&#xff0c;把整体流程记录下&#xff0c;过程中会用到GAN准备数据集&#xff08;真实图像素材&#xff09; 目标生成人脸的&#xff0c;你像游戏注册时选一个脸。捏脸。那么准备真实人脸图片老规矩&#xff0c;缩放裁剪…

5分钟入门C++

这是5分钟入门 C 的精简 Demo&#xff0c;尽量涵盖核心概念&#xff1a;变量、函数、类、控制流、STL 容器&#xff0c;让你快速理解 C 的基本用法。#include <iostream> // 输入输出 #include <vector> // 动态数组 #include <algorithm> // 常用算法…

java注释功能

为了优化代码的使用&#xff0c;分享记录相关注释功能。 单行注释 // 这是单行注释文字多行注释 /* 这是多行注释文字 这是多行注释文字 注意&#xff1a;多行注释不能嵌套使用。 */文档注释 /**- 这是文档注释文字- */注释的作用 描述类或方法的功能&#xff0c;方便别人和自…

(论文速读)DiffusionDet - 扩散模型在目标检测中的开创性应用

论文题目&#xff1a;DiffusionDet: Diffusion Model for Object Detection&#xff08;DiffusionDet:物体检测的扩散模型&#xff09;会议&#xff1a;ICCV2023摘要&#xff1a;我们提出了DiffusionDet&#xff0c;这是一个新的框架&#xff0c;它将物体检测描述为从噪声盒到目…

LangChain简介

LangChain 是一个用于构建基于大语言模型&#xff08;LLM&#xff09;的应用程序的开源框架&#xff0c;它提供了一套工具、组件和接口&#xff0c; 可以将 LLM 模型、向量数据库、交互层 Prompt、外部知识、外部工具整合到一起&#xff0c;进而可以自由构建 LLM 应用。 LangCh…

为什么哈希表(字典)的查询速度有时会突然变慢

哈希表&#xff08;在许多语言中被称为“字典”或“关联数组”&#xff09;的查询速度&#xff0c;在理想情况下&#xff0c;应是接近“瞬时”的常数时间&#xff0c;然而&#xff0c;在特定场景下&#xff0c;其性能之所以会突然、无征兆地变慢&#xff0c;其根源&#xff0c;…

whisper 语种检测学习笔记

目录 transformers推理&#xff1a; transformers 源代码 网上的语种检测调用例子&#xff1a; 语种检测 api transformers推理&#xff1a; https://github.com/openai/whisper/blob/c0d2f624c09dc18e709e37c2ad90c039a4eb72a2/whisper/decoding.py waveform, sample_rat…

第1节 从函数到神经网络:AI思路的逆袭之路

&#x1f914; 开篇灵魂拷问 是不是觉得AI知识体系庞大到吓人&#xff1f;看了一堆快餐视频还是云里雾里&#xff1f;别慌&#xff01;这个系列就是要帮你打通任督二脉&#xff0c;用"既快又慢、既深入又肤浅、既有趣又严肃"的方式讲透AI基础知识&#xff01; &…

【科研绘图系列】R语言绘制多种饼图

文章目录 介绍 加载R包 数据下载 导入数据 数据预处理 画图1 画图2 画图3 画图4 画图5 画图6 系统信息 参考 介绍 【科研绘图系列】R语言绘制多种饼图 加载R包 rm(list = ls()) library(ggstatsplot) library(ggplot2) library(plotrix) library(ggpubr

vue3权限树封装成组件

vue3权限树组件 功能&#xff1a; 1、勾选节点、自动把父节点勾选。 2、取消勾选、子节点全部取消勾选。检查父节点&#xff0c;如果只有这个子节点、遍历把父节点取消勾选 3、filter过滤不仅展示父节点、相关子节点同时展示 4、 高亮显示所有过滤数据 效果图父组件引用 <te…