glib 是什么?

  • glib 是一个比较强大的 软件库,类似于 libc 库

交叉编译

  • 当前需要移植到 aarch64(ARM64)平台上,需要使用 aarch64 交叉编译工具链编译 glib

环境准备

  • ubuntu 20.04

  • 安装较新版本的 meson : >= 0.60,我安装的是最新 meson 1.1.1

  • git clone glib 的最新仓库,当前的版本: v2.77,正式发布版本:v2.76

下载 glib

  • 可以在 glib 官方 git clone 拉取:地址 https://gitlab.gnome.org/GNOME/glib,感觉速度比较的慢

  • 可以在 github 上拉取:https://github.com/GNOME/glib,github 不稳定,不过一旦连接上,速度还是挺快的

配置交叉编译

  • 编写 交叉编译的配置文件:这里使用 aarch64-linux-musleabi-gcc 工具链,当然可以配置为其他的交叉编译工具链,如 aarch64-linux-gnu-gcc

  • 创建配置文件:cross_aarch64_musl.txt,内容如下

[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'aarch64'
endian = 'little'[properties]
c_args = []
c_link_args = [][binaries]
c = 'aarch64-linux-musleabi-gcc'
cpp = 'aarch64-linux-musleabi-g++'
ar = 'aarch64-linux-musleabi-ar'
ld = 'aarch64-linux-musleabi-ld'
objcopy = 'aarch64-linux-musleabi-objcopy'
strip = 'aarch64-linux-musleabi-strip'
pkgconfig = 'aarch64-linux-gnu-pkg-config'
  • 安装 并升级 meson $ sudo apt install meson

  • 升级 meson 到 0.60 版本以上:

sudo apt install python3-pip
pip3 install meson==0.63

安装 aarch64-linux-gnu-pkg-config

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

配置 aarch64 交叉编译工具链

  • 下载并解压 aarch64 交叉编译工具链,然后配置环境变量:

  • 可以修改 /etc/profile,后面添加

export PATH=$PATH:/home/rtt/smart/gnu_gcc/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin

  • 然后 source /etc/profile 使能环境变量

编译 glib

  • 编译步骤
meson --prefix=/home/rtt/smart/libs/glib_libs --cross-file cross_aarch64_musl.txt builddir
ninja -C builddir
ninja -C builddir install
  • 这里 --prefix=/home/rtt/smart/libs/glib_libs 是 glib 生成的 lib 库的 install 的目录,因为是交叉编译编译,不能直接安装到PC 系统的目录下,需要实际指定

  • 这里 --cross-file cross_aarch64_musl.txt 是上面创建的 meson 交叉编译的配置文件,如果 gcc 交叉编译工具链不同,可以修改

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

  • ninja -C builddir install ,编译完成后, 产物在 builddir 目录,还有很多的临时文件, install 可以复制到 --prefix=/home/rtt/smart/libs/glib_libs 指定的目录下,【备注】交叉编译的 glib 库,不能安装到主机系统的路径下,如 /usr/lib 目录

编译的产物

  • meson 构建时,会下几个子仓库,如果下载失败,可以多试几次

  • 编译的产物如下:

zhangsz@zhangsz:~/rtt/glib/libs/lib$ ls
gio              libgio-2.0.so.0.7700.0      libgobject-2.0.so           libpcre2-16.so.0       libpcre2-8.so.0.11.0
glib-2.0         libglib-2.0.so              libgobject-2.0.so.0         libpcre2-16.so.0.11.0  libpcre2-posix.so
libffi.so        libglib-2.0.so.0            libgobject-2.0.so.0.7700.0  libpcre2-32.so         libpcre2-posix.so.3
libffi.so.7      libglib-2.0.so.0.7700.0     libgthread-2.0.so           libpcre2-32.so.0       libpcre2-posix.so.3.0.2
libffi.so.7.1.0  libgmodule-2.0.so           libgthread-2.0.so.0         libpcre2-32.so.0.11.0  libz.so
libgio-2.0.so    libgmodule-2.0.so.0         libgthread-2.0.so.0.7700.0  libpcre2-8.so          pkgconfig
libgio-2.0.so.0  libgmodule-2.0.so.0.7700.0  libpcre2-16.so              libpcre2-8.so.0

  • 库与头文件都在了

  • 自此,编译完成

小结

  • 当前最新版本的 glib,如 v2.77 版本,编译起来还是比较的顺利的,meson 构建过程会自动拉取依赖的子模块,如 libz、libffi、libpcre2 等,存放在 glit 的 subprojects 目录下

  • glib 的功能还是比较强大的,仓库自带很多的测试用例:如 glib 子目录 glib/tests 下,存放 glit 子模块的 测试用例,可以用于验证 glit 功能

ubuntu 20.04 aarch64 平台交叉编译 glib相关推荐

  1. QT4.8.6的交叉编译 - 编译平台:Ubuntu 20.04 LTS,目标平台:linux/imx6ull

    版本记录表 开发环境 编译环境: 64位Ubuntu 20.04 LTS 交叉编译工具链: arm-linux-gnueabihf-GCC 4.9.1 本地编译器:gcc version 7.5.0 ...

  2. ubuntu 安装kde桌面_在Ubuntu 20.04系统上安装KDE Plasma Desktop的方法

    本文介绍在Ubuntu 20.04系统上安装KDE Plasma Desktop的方法.Plasma Desktop是KDE创建的一种流行且功能强大的桌面环境,主要用于Linux系统.KDE Plas ...

  3. harfbuzz安装位置 linux_最新Ubuntu 20.04 LTS已发布,在Win10中该如何进行安装和使用?...

    最近Ubuntu发布最新的20.04 LTS长期支持版本,官方提供为期5年的更新升级.安全修复等服务.国内的优麒麟团队也同步放出了优麒麟20.04 LTS,加入了全新的UKUI 3.0桌面环境. 那么 ...

  4. Ubuntu 20.04 搭建 Fisco-BCOS 2.8.0 区块链系统

    0. 摘要 本文根据 Fisco-BCOS 及 Webase 官方文档,就安装过程做了详细描述.针对官方文档中一些不清楚的地方,做了补充,方便新手搭建. 1. 准备工作 1.1 系统: Ubuntu ...

  5. 在Ubuntu 20.04上面搭建嵌入式开发环境

    电脑系统盘出故障了,重新安装了Ubunt20.04(之前用的是18.04).日常工作编译基于Rockchip和AM335x系列芯片的内核和U-boot比较多,所以先搭建它们的开发环境(包括并不限依赖的 ...

  6. 在Win10 PC上安装Ubuntu 20.04 系统

    在Win10 PC上安装Ubuntu 20.04 系统 本文仅适用于UEFI+GPT类型的PC,有关这方面的知识请自行了解. 引言 为什么需要使用 Linux 系统? 既已看到此文,我相信你一定有需求 ...

  7. 如何在Ubuntu 20.04上安装和使用TimescaleDB

    The author selected the COVID-19 Relief Fund to receive a donation as part of the Write for DOnation ...

  8. Ubuntu 20.04系统安装及初始配置

    文章目录 前言 一.系统要求 二.安装步骤 1.下载Ubuntu 20.04镜像 2.创建启动盘 3.启动计算机并进入 BIOS/UEFI 设置 4.进入安装界面(一步步走下去就好) 5.完成安装. ...

  9. 【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程

    ROS安装指南 目录 ROS安装指南 前言 一.配置Linux清华镜像源 1.1 介绍 1.2 开始配置 二.安装ROS 2.1 ROS的介绍 2.1 开始安装:配置公钥 2.2 系统更新 2.3 安 ...

最新文章

  1. 德国工业4.0眼里“工业互联网”与“智能制造”
  2. WPF:WPF显示PDF文档 之 编译 MoonPdfLib库
  3. 在Kaggle上赢得大数据竞赛的技巧和窍门
  4. 数据中心机房供电需求有哪些?存在哪些电能质量问题?
  5. linux永久改变字符集,Linux 下mysql永久更改字符集
  6. VTK:结构化网格之SGrid
  7. C语言中的结构体,联合,链表和枚举,位域(上)
  8. 【大话数据结构算法】直接插入排序
  9. class h5 点击后样式变化_【php】JQuery怎么实现页面刷新后保留鼠标点击addclass的样式?...
  10. Java讲课笔记05:运算符与表达式
  11. oracle中多个数据库连接池,数据库连接池为什么要建立多个连接
  12. dsp调音一次多少钱_DSP调音到底调的是什么?什么是EQ?
  13. 实对称矩阵特征值按大小排序
  14. 计算机英语词汇带音标,常用计算机英语词汇3000例(含音标)
  15. 第三(关于set、file、args)
  16. Effective C++ NVI手法
  17. CC2530+PA(CC2590)开启功率放大模块功能说明
  18. oracle 倒库详细步骤,超详细的倒车入库步骤
  19. kotlin发音!这份字节跳动历年校招Android面试真题解析,附架构师必备技术详解
  20. TypeScript看完就会了

热门文章

  1. 还未正式辞职的我开始焦虑了
  2. color属性 python_Python curses.COLOR_BLUE属性代码示例
  3. 使用 Visual Basic 通过 32 位 地址访问内存(中英对照)
  4. 2020最新四大会计师事务所网申笔试面试资料
  5. Windows Server 2012 R2部署OWA服务(三)安装部署OWA服务
  6. Windows/Windows下堪称神器的软件集合
  7. 启用电脑对远程服务器的访问,未启用对服务器的远程访问 win10家庭版
  8. python+opencv车道线,实线虚线的检测
  9. ApacheCamel简介
  10. C#获取路由器外网IP,MAC地址