Ubuntu 20.04 arm プラットフォームのクロスコンパイル glib ライブラリ

グリブとは何ですか?

  • glib は、libc ライブラリに似た比較的強力なソフトウェア ライブラリです。

クロスコンパイル

  • 現時点では、arm (ARM 32 ビット) プラットフォームに移植する必要があり、glib は arm クロスコンパイル ツールチェーンを使用してコンパイルする必要があります。

環境整備

  • ubuntu 20.04

  • 新しいバージョンの meson をインストールします: >= 0.60、例:meson 0.63

  • git clone glib の最新ウェアハウス、現在のバージョン: v2.77、正式リリース バージョン: v2.76

ダウンロード

クロスコンパイルを設定する

  • クロスコンパイル構成ファイルを作成します。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 クロスコンパイル ツールチェーンをダウンロードして構成する

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_libsglib によって生成された lib ライブラリのインストール ディレクトリがあります。これはクロスコンパイルされてコンパイルされるため、PC システムのディレクトリに直接インストールできず、既存のパスを指定する必要があります。

  • 上記で作成した中間子クロスコンパイル構成ファイルは次のとおり--cross-file cross_arm.txtです。gcc クロスコンパイル ツールチェーンが異なる場合は、変更できます。

  • ninja -C builddirCompilation は、マルチスレッドのコンパイルを開始できる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

おすすめ

転載: blog.csdn.net/tcjy1000/article/details/131256789