在 RISC - V 上安装 Neovim
由于目前 LuaJIT 对 RISC - V 的支持不够完善,OS 软件包里的 Neovim 通常并没有使用 LuaJIT 构建,而是使用 Lua,导致我们有一些插件无法使用。本文将使用第三方修改的 LuaJIT,来构建几乎全功能的 Neovim。
获取与交叉编译 LuaJIT
仓库:https://github.com/plctlab/LuaJIT/tree/riscv
git clone https://github.com/plctlab/LuaJIT/tree/riscv
cd LuaJIT将以下脚本保存为 compile.sh:
set -euo pipefail
HOST_CC="/usr/lib/llvm-20/bin/clang" # 当前主机的 CC
TOOLCHAIN="/workspace/mingyi/opt/clang-riscv64-unknown-linux-gnu/bin" # RISC-V 交叉编译工具链的位置
SYSROOT="/workspace/mingyi/opt/riscv/sysroot" # RISC-V sysroot 的位置
TARGET_ARCH_FLAGS="-march=rva23u64 -mabi=lp64d" # 由于我的 target CPU 为 SpacemiT K3, 此处为 RVA23U64 进行编译。
make clean
make -j32 \
HOST_CC="$HOST_CC" \
STATIC_CC="$TOOLCHAIN/clang" \
DYNAMIC_CC="$TOOLCHAIN/clang -fPIC" \
TARGET_LD="$TOOLCHAIN/clang" \
TARGET_AR="$TOOLCHAIN/llvm-ar rcus" \
TARGET_STRIP="$TOOLCHAIN/llvm-strip" \
TARGET_SYS=Linux \
TARGET_FLAGS="--sysroot=$SYSROOT $TARGET_ARCH_FLAGS" \
TARGET_CFLAGS="-DLUAJIT_UNWIND_INTERNAL"之后执行 bash compile.sh 进行编译。
编译好后,安装到某个方便日后传送到目标机器上的位置,例如 /workspace/mingyi/opt/luajit:
make install PREFIX=/workspace/mingyi/opt/luajit这之后我们就能将该文件夹同步到目标机器上:
rsync -azP --delete /workspace/mingyi/opt/luajit/ K3:/workspace/mingyi/opt/luajit/在目标机器上编译 Neovim
由于交叉编译 Neovim 有些麻烦(其实是我还没摸索出来),所以我们就直接在 RISC - V 上编译 Neovim
首先拿下源代码:
git clone https://github.com/neovim/neovim.git
cd neovim同样的保存一个脚本 compile.sh 来编译:
make distclean
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
export CFLAGS="-march=rva23u64 -pipe"
export CXXFLAGS="-march=rva23u64 -pipe"
LUAJIT_PREFIX=/workspace/mingyi/opt/luajit # LuaJIT 存放的位置
export CMAKE_PREFIX_PATH="$LUAJIT_PREFIX${CMAKE_PREFIX_PATH:+:$CMAKE_PREFIX_PATH}"
LUAJIT_CMAKE_FLAGS="\
-DLUAJIT_LIBRARY:FILEPATH=$LUAJIT_PREFIX/lib/libluajit-5.1.so \
-DLUAJIT_INCLUDE_DIR:PATH=$LUAJIT_PREFIX/include/luajit-2.1"
make \
CMAKE_BUILD_TYPE=Release \
ENABLE_LTO=ON \
CMAKE_INSTALL_PREFIX=/workspace/mingyi/opt/neovim \ # 安装 Neovim 的目标位置
DEPS_CMAKE_FLAGS="-DUSE_BUNDLED_LUAJIT=OFF $LUAJIT_CMAKE_FLAGS" \
CMAKE_EXTRA_FLAGS="$LUAJIT_CMAKE_FLAGS"同样执行 bash compile.sh 来编译。
编译好后 make install 即可。这样就获得了一个在 RISC - V 上运行的,使用 LuaJIT 的 Neovim。别忘了加入 PATH 来替换掉 OS 软件包提供的版本。