跳到主要内容

使用 CMake 和 Meson 集成

cmake

首先确保你有安装 cmake 和 ninja,如果没有安装,可以使用以下命令安装:

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

下载 zlib:

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

安装并激活 gnu-plct 工具链编译:

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

解压 zlib:

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

使用 cmake 构建 zlib: 为什么要用这样的参数可以参考 venv 里的 toolchain.riscv64-plct-linux-gnu.cmake 文件

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

检查编译出的文件:

$ 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

安装 meson:

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

和上文一样,首先安装并激活 gnu-plct 工具链编译:

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

下载 taisei:

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

根据 venv/meson-cross.ini,meson 的交叉编译配置及编译如下:

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

检查编译出的文件:

$ 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