Compilation croisée glib pour la plate-forme ubuntu 20.04 aarch64

Qu'est-ce que le désinvolte ?

  • glib est une bibliothèque logicielle relativement puissante, similaire à la bibliothèque libc

compilation croisée

  • Actuellement, il doit être porté sur la plate-forme aarch64 (ARM64) et glib doit être compilé avec la chaîne d'outils de compilation croisée aarch64

Préparation environnementale

  • Ubuntu 20.04

  • Installer une version plus récente de meson : >= 0.60, j'ai installé la dernière version de meson 1.1.1

  • Le dernier entrepôt de git clone glib, la version actuelle : v2.77, la version officielle : v2.76

télécharger glib

Configurer la compilation croisée

  • Écrivez un fichier de configuration de compilation croisée : aarch64-linux-musleabi-gccla chaîne d'outils est utilisée ici, et bien sûr elle peut être configurée comme d'autres chaînes d'outils de compilation croisée, telles queaarch64-linux-gnu-gcc

  • Créez un fichier de configuration : cross_aarch64_musl.txt, le contenu est le suivant

[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'
  • Installer et mettre à jour meson$ sudo apt install meson

  • Mettre à niveau meson vers la version 0.60 et supérieure :

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

installer aarch64-linux-gnu-pkg-config

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

Configurer la chaîne d'outils de compilation croisée aarch64

  • Téléchargez et décompressez la chaîne d'outils de compilation croisée aarch64, puis configurez les variables d'environnement :

  • Peut être modifié /etc/profile, ajouté plus tard

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

  • source /etc/profileActivez ensuite la variable d'environnement

compiler glib

  • Étapes de compilation
meson --prefix=/home/rtt/smart/libs/glib_libs --cross-file cross_aarch64_musl.txt builddir
ninja -C builddir
ninja -C builddir install
  • Voici --prefix=/home/rtt/smart/libs/glib_libsle répertoire d'installation de la bibliothèque lib générée par glib, car elle est compilée et compilée de manière croisée, elle ne peut pas être directement installée dans le répertoire du système PC et doit être réellement spécifiée

  • Voici --cross-file cross_aarch64_musl.txtle fichier de configuration de compilation croisée meson créé ci-dessus, si la chaîne d'outils de compilation croisée gcc est différente, vous pouvez la modifier

  • ninja -C builddirCompilation builddirest un répertoire pour stocker les fichiers compilés

  • ninja -C builddir install, une fois la compilation terminée, le produit se trouve dans builddirle répertoire et de nombreux fichiers temporaires peuvent être copiés dans --prefix=/home/rtt/smart/libs/glib_libsle répertoire spécifié par install. [Remarque] La bibliothèque glib compilée de manière croisée ne peut pas être installée dans le chemin de l'hôte système, tel que le répertoire /usr/lib

produit compilé

  • Lorsque meson est construit, plusieurs sous-entrepôts seront téléchargés. Si le téléchargement échoue, vous pouvez essayer plusieurs fois

  • Le produit compilé est le suivant :

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

insérez la description de l'image ici

  • La bibliothèque et les fichiers d'en-tête sont tous là

  • Depuis, la compilation est terminée

résumé

  • La dernière version actuelle de glib, telle que la v2.77, se compile relativement bien. Le processus de construction de meson extraira automatiquement les sous-modules dépendants, tels que libz, libffi, libpcre2, etc., et les stockera dans le répertoire de subprojectsglit

  • La fonction de glib est relativement puissante et l'entrepôt est livré avec de nombreux cas de test : par exemple, dans le sous-répertoire glib , les cas de test des sous-modules glib/testssont stockés , ce qui peut être utilisé pour vérifier la fonction de glitglit

Je suppose que tu aimes

Origine blog.csdn.net/tcjy1000/article/details/131136180
conseillé
Classement