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
-
Il peut être extrait du clone git officiel de glib : adresse https://gitlab.gnome.org/GNOME/glib , la vitesse est relativement lente
-
Vous pouvez le tirer sur github : https://github.com/GNOME/glib , github est instable, mais une fois connecté, la vitesse est toujours très rapide
Configurer la compilation croisée
-
Écrivez un fichier de configuration de compilation croisée :
aarch64-linux-musleabi-gcc
la 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/profile
Activez 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_libs
le 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.txt
le 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 builddir
Compilationbuilddir
est un répertoire pour stocker les fichiers compilés -
ninja -C builddir install
, une fois la compilation terminée, le produit se trouve dansbuilddir
le répertoire et de nombreux fichiers temporaires peuvent être copiés dans--prefix=/home/rtt/smart/libs/glib_libs
le 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
-
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
subprojects
glit -
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/tests
sont stockés , ce qui peut être utilisé pour vérifier la fonction de glitglit