Zum Hauptinhalt springen

Integration mit CMake und Meson

cmake

Stellen Sie zunächst sicher, dass Sie cmake und ninja installiert haben. Falls nicht, können Sie die folgenden Befehle verwenden:

# Ubuntu/Debian
sudo apt-get install cmake ninja-build
# Fedora
sudo dnf install cmake ninja-build

Laden Sie zlib herunter:

wget https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.2.2.tar.gz
mkdir zlib-ng
cd zlib-ng

Installieren und aktivieren Sie die gnu-plct-Toolchain für die Kompilierung:

ruyi install gnu-plct
ruyi venv -t gnu-plct generic venv
. venv/bin/ruyi-activate

Entpacken Sie zlib:

tar -xf ./zlib-ng-2.2.2.tar.gz
cd zlib-ng-2.2.2

Verwenden Sie cmake, um zlib zu erstellen: Warum diese Parameter verwendet werden, können Sie in der Datei toolchain.riscv64-plct-linux-gnu.cmake im venv-Verzeichnis nachlesen.

cmake . -G Ninja -DCMAKE_C_COMPILER=riscv64-plct-linux-gnu-gcc -DZLIB_COMPAT=ON -DWITH_GTEST=OFF
ninja

Überprüfen Sie die kompilierten Dateien:

$ file libz.so.1.3.1.zlib-ng 
libz.so.1.3.1.zlib-ng: ELF 64-bit LSB shared object, UCB RISC-V, RVC, double-float ABI, version 1 (SYSV), dynamically linked, BuildID[sha1]=bb6bdf59fa0fd746b3a6d3586ff1cfabcbe4a6e9, with debug_info, not stripped

meson

Installieren Sie meson:

# Ubuntu/Debian
sudo apt-get install meson
# Fedora
sudo dnf install meson

Wie oben, installieren und aktivieren Sie zunächst die gnu-plct-Toolchain für die Kompilierung:

ruyi install gnu-plct
ruyi venv -t gnu-plct generic venv
. venv/bin/ruyi-activate

Laden Sie taisei herunter:

git clone --recurse-submodules --depth=1 https://github.com/taisei-project/taisei
cd taisei

Gemäß der Datei venv/meson-cross.ini erfolgt die Konfiguration und Kompilierung für die Cross-Kompilierung mit meson wie folgt:

meson setup --cross-file /home/cyan/zlib-ng/venv/meson-cross.ini build/
meson compile -C build/

Überprüfen Sie die kompilierten Dateien:

$ file build/src/taisei
taisei: ELF 64-bit LSB executable, UCB RISC-V, RVC, double-float ABI, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, BuildID[sha1]=8fb80413e4a41ffeb75450b80a4b068c504b152e, for GNU/Linux 4.15.0, with debug_info, not stripped