グリブとは何ですか?
- glib は、libc ライブラリに似た比較的強力なソフトウェア ライブラリです。
クロスコンパイル
- 現時点では、arm (ARM 32 ビット) プラットフォームに移植する必要があり、glib は arm クロスコンパイル ツールチェーンを使用してコンパイルする必要があります。
環境整備
-
ubuntu 20.04
-
新しいバージョンの meson をインストールします: >= 0.60、例:
meson 0.63
-
git clone glib の最新ウェアハウス、現在のバージョン: v2.77、正式リリース バージョン: v2.76
ダウンロード
-
glib の公式 git クローンからプルできます: アドレスhttps://gitlab.gnome.org/GNOME/glib、速度は比較的遅い
-
github: https://github.com/GNOME/glibでプルできます。github は不安定ですが、一度接続すると、速度は依然として非常に高速です
クロスコンパイルを設定する
-
クロスコンパイル構成ファイルを作成します。
arm-linux-gnueabihf-gcc
ツールチェーンを使用します。バージョンはここにgcc version 13.0.0 20221001
あります。新しい gcc クロスコンパイル ツールチェーン バージョンを使用することをお勧めします。 -
設定ファイルcross_arm.txtを作成します。内容は次のとおりです。
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'arm'
endian = 'little'
[properties]
c_args = []
c_link_args = []
[binaries]
c = 'arm-linux-gnueabihf-gcc'
cpp = 'arm-linux-gnueabihf-g++'
ar = 'arm-linux-gnueabihf-ar'
ld = 'arm-linux-gnueabihf-ld'
objcopy = 'arm-linux-gnueabihf-objcopy'
strip = 'arm-linux-gnueabihf-strip'
pkgconfig = 'arm-linux-gnueabihf-pkg-config'
-
meson のインストールとアップグレード
$ sudo apt install meson
-
meson をバージョン 0.60 以降にアップグレードします。
sudo apt install python3-pip
pip3 install meson==0.63
arm-linux-gnueabihf-pkg-config をインストールする
sudo apt install pkg-config-arm-linux-gnueabihf
arm クロスコンパイル ツールチェーンをダウンロードして構成する
-
ダウンロードアドレスhttps://snapshots.linaro.org/gnu-toolchain/、
-
ARM 公式ダウンロードhttps://developer.arm.com/downloads/-/arm-gnu-toolchain-downloadsにアクセスすることもできます。
-
arm クロスコンパイル ツールチェーンを指定した場所にダウンロードして解凍し、環境変数を構成します。
-
変更可能
/etc/profile
、後で追加可能
export PATH=$PATH:/home/zhangsz/tools/gcc-linaro-13.0.0-2022.10-x86_64_arm-linux-gnueabihf/bin
-
arm クロスコンパイル ツールチェーンのパスは、gcc クロスコンパイル ツールチェーンの実際のストレージ パスであることに注意してください。
-
次に、
source /etc/profile
環境変数を有効にします。gccarm-linux-gnueabihf-gcc -v
クロスコンパイル ツールチェーンが有効かどうかを確認するために入力できます。
口語訳をコンパイルする
- コンパイル手順
meson --prefix=/home/rtt/linux/libs/glib_libs -Ddefault_library=both --cross-file cross_arm.txt builddir
ninja -C builddir
ninja -C builddir install
-
ここに
--prefix=/home/rtt/linux/libs/glib_libs
glib によって生成された lib ライブラリのインストール ディレクトリがあります。これはクロスコンパイルされてコンパイルされるため、PC システムのディレクトリに直接インストールできず、既存のパスを指定する必要があります。 -
上記で作成した中間子クロスコンパイル構成ファイルは次のとおり
--cross-file cross_arm.txt
です。gcc クロスコンパイル ツールチェーンが異なる場合は、変更できます。 -
ninja -C builddir
Compilation は、マルチスレッドのコンパイルを開始できるbuilddir
コンパイル済みファイルを保存するディレクトリです。ninja -C builddir -j8
-
ninja -C builddir install
、コンパイルが完了すると、製品がbuilddir
ディレクトリに配置され、多くの一時ファイルが存在します。これらは、インストール--prefix=/home/rtt/linux/libs/glib_libs
によって指定されたディレクトリにコピーできます。 -
[備考] クロスコンパイルされた glib ライブラリは、現在の PC ホスト システムのパス (/usr/lib ディレクトリなど) にはインストールできません。
コンパイルされた製品
-
現在の最新バージョンの glib は、meson に組み込まれるときにいくつかのサブウェアハウスを自動的にダウンロードします。ダウンロードに失敗した場合は、さらに数回試すことができます。
-
コンパイルした製品は次のとおりです。
- ライブラリとヘッダー ファイルはすべて存在します
zhangsz@zhangsz:~/linux/libs/glib_libs$ ls
bin include lib libexec share
- それ以来、glib arm プラットフォームのクロスコンパイルが完了し、この glib ライブラリを組み込み ARM Linux システムに適用できるようになりました。
まとめ
-
glib の現在の最新バージョン (バージョン v2.77 など) では、中間子が構成をビルドするときにサブモジュールが自動的にプルされるため、速度が遅くなる可能性があります (外部ネットワークの速度に注意してください)。中間子のビルド プロセスは、次のような依存サブモジュールを自動的にプルします。 libz、libffi、libpcre2 など、 glit の
subprojects
ディレクトリに保存されます。 -
glib の機能は比較的強力で、ウェアハウスには多くのテスト ケースが付属しています。たとえば、 glib サブディレクトリにはサブモジュールのテスト ケースが
glib/tests
保存されており、これを使用して glit の機能を検証できます。glit