You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在x86 Ubuntu 22.04.2上交叉编译TVM至RISC-V报错求助

解决交叉编译TVM到RISC-V时LLVM库格式错误的问题

错误根源

你遇到的链接错误是因为当前使用的libLLVM-14.so是x86_64架构的库,而RISC-V交叉链接器无法处理非RISC-V格式的二进制文件。通过apt install llvm安装的LLVM是针对本地x86系统编译的,并非适配RISC-V目标的版本,因此交叉编译TVM时不能直接使用它。


解决步骤

1. 获取RISC-V目标的LLVM

你需要编译或下载适配RISC-V架构的LLVM(推荐和当前版本匹配的14.x系列):

编译RISC-V LLVM(推荐)

在x86 Ubuntu上编译支持RISC-V目标的LLVM:

# 安装编译依赖
sudo apt install build-essential cmake ninja-build git libssl-dev

# 克隆LLVM 14.x源码
git clone --branch llvmorg-14.0.6 https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build && cd build

# 配置CMake,指定RISC-V为目标架构
cmake ../llvm \
  -GNinja \
  -DCMAKE_BUILD_TYPE=Release \
  -DLLVM_TARGETS_TO_BUILD=RISCV \
  -DLLVM_ENABLE_PROJECTS=clang \
  -DCMAKE_INSTALL_PREFIX=/opt/riscv-llvm-14

# 编译并安装
ninja -j$(nproc)
sudo ninja install
或使用预编译包

如果不想自行编译,可以从可信源下载RISC-V预编译LLVM包,解压后记录安装路径即可。

2. 调整TVM的CMake编译参数

修改交叉编译命令,指定RISC-V版本LLVM的路径,确保CMake识别到正确的库:

# 先删除旧build目录(如果之前运行过CMake)
rm -rf build && mkdir build && cd build

cmake .. \
    -DCMAKE_SYSTEM_NAME=Linux \
    -DCMAKE_SYSTEM_VERSION=1 \
    -DCMAKE_C_COMPILER=/usr/bin/riscv64-linux-gnu-gcc \
    -DCMAKE_CXX_COMPILER=/usr/bin/riscv64-linux-gnu-g++ \
    -DCMAKE_FIND_ROOT_PATH=/usr/riscv64-linux-gnu \
    -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
    -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
    -DMACHINE_NAME=riscv64-linux-gnu \
    -DLLVM_DIR=/opt/riscv-llvm-14/lib/cmake/llvm \  # 替换为你的RISC-V LLVM实际路径
    -DUSE_LLVM=ON

make -j$(nproc)

3. 验证LLVM架构

可以通过以下命令确认LLVM库的架构是否正确:

file /opt/riscv-llvm-14/lib/libLLVM-14.so

输出应包含ELF 64-bit LSB shared object, UCB RISC-V字样,说明是RISC-V格式的库。


内容的提问来源于stack exchange,提问作者Jerry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:13:12