Cross compile llvm for riscv64 errors

Hi , when I make cross compile for llvm, I get the following error:

cd /home/hye/llvm-project/build && /home/hye/llvm-project/build/bin/llvm-tblgen -gen-attrs -I /home/hye/llvm-project/llvm/include/llvm/IR -I/home/hye/llvm-project/build/include -I/home/hye/llvm-project/llvm/include /home/hye/llvm-project/llvm/include/llvm/IR/Attributes.td --write-if-changed -o include/llvm/IR/Attributes.inc -d include/llvm/IR/Attributes.inc.d
/bin/sh: 1: /home/hye/llvm-project/build/bin/llvm-tblgen: Exec format error
[298/2031] Building CXX object lib/MC/CMakeFiles/LLVMMC.dir/MCStreamer.cpp.o

and here is my configure:

cmake -G Ninja -DCMAKE_BUILD_TYPE="Release" \
      -DCMAKE_CROSSCOMPILING=True \
      -DBUILD_SHARED_LIBS=True \
      -DLLVM_USE_SPLIT_DWARF=True \
      -DCMAKE_INSTALL_PREFIX="/home/hye/llvm" \
      -DLLVM_OPTIMIZED_TABLEGEN=True \
      -DLLVM_BUILD_TESTS=False  \
      -DLLVM_DEFAULT_TARGET_TRIPLE=riscv64-unknown-linux-gnu  \
      -DLLVM_TARGET_ARCH=RISCV64 \
      -DLLVM_TARGETS_TO_BUILD=RISCV \
      -DCMAKE_CXX_FLAGS='-mabi=lp64d -march=rv64imafdc' \
      ../llvm

It seems that the program generated will be run, but I am doing cross compile, so it can’t be executed on host, could anyone have some advice ? Thanks !