ubuntu 20.04 aarch64 プラットフォーム用のクロスコンパイル glib

グリブとは何ですか?

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

クロスコンパイル

  • 現時点では、aarch64 (ARM64) プラットフォームに移植する必要があり、glib は aarch64 クロスコンパイル ツールチェーンでコンパイルする必要があります。

環境整備

  • ubuntu 20.04

  • 新しいバージョンの meson をインストールします: >= 0.60、私は最新の meson 1.1.1 をインストールしました

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

ダウンロード

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

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

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

  • ninja -C builddirCompilationbuilddirはコンパイルされたファイルを格納するディレクトリです

  • ninja -C builddir install, コンパイルが完了すると、製品はbuilddirディレクトリ内にあり、多くの一時ファイルがあり、--prefix=/home/rtt/smart/libs/glib_libsinstall で指定したディレクトリにコピーできます。 [注意] クロスコンパイルされた 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

おすすめ

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