グリブとは何ですか?
- glib は、libc ライブラリに似た比較的強力なソフトウェア ライブラリです。
クロスコンパイル
- 現時点では、aarch64 (ARM64) プラットフォームに移植する必要があり、glib は aarch64 クロスコンパイル ツールチェーンでコンパイルする必要があります。
環境整備
-
ubuntu 20.04
-
新しいバージョンの meson をインストールします: >= 0.60、私は最新の meson 1.1.1 をインストールしました
-
git clone glib の最新ウェアハウス、現在のバージョン: v2.77、正式リリース バージョン: v2.76
ダウンロード
-
glib の公式 git クローンからプルできます: アドレス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
環境変数を有効にします
口語訳をコンパイルする
- コンパイル手順
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 ライブラリのインストール ディレクトリがあります。これはクロスコンパイルされてコンパイルされるため、PC システムのディレクトリに直接インストールできず、実際に指定する必要があります。 -
上記で作成した中間子クロスコンパイル構成ファイルは次のとおり
--cross-file cross_aarch64_musl.txt
です。gcc クロスコンパイル ツールチェーンが異なる場合は、変更できます。 -
ninja -C builddir
Compilationbuilddir
はコンパイルされたファイルを格納するディレクトリです -
ninja -C builddir install
, コンパイルが完了すると、製品はbuilddir
ディレクトリ内にあり、多くの一時ファイルがあり、--prefix=/home/rtt/smart/libs/glib_libs
install で指定したディレクトリにコピーできます。 [注意] クロスコンパイルされた glib ライブラリはホストのパスにインストールできません/usr/lib ディレクトリなどのシステム
コンパイルされた製品
-
中間子が構築されると、いくつかのサブウェアハウスがダウンロードされます。ダウンロードが失敗した場合は、さらに数回試すことができます
-
コンパイルした製品は次のとおりです。
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 など) は、比較的スムーズにコンパイルされます。中間子ビルド プロセスは、libz、libffi、libpcre2 などの依存サブモジュールを自動的にプルし、それらを glit のディレクトリに保存します
subprojects
。 -
glib の機能は比較的強力で、ウェアハウスには多くのテスト ケースが付属しています。たとえば、 glib サブディレクトリにはサブモジュールのテスト ケースが
glib/tests
保存されており、これを使用して glit の機能を検証できます。glit