下載及交叉編譯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
英文地址,請注明出處:http://en.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…