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

执行trunk serve时rs_osrm编译失败:找不到crt1.o等库

解决Wasm编译rs_osrm时wasm-ld找不到系统库的问题

核心原因

rs_osrm是OSRM(C++路由引擎)的Rust绑定,依赖原生系统库。而trunk serve默认将项目编译为Wasm目标,Wasm运行时没有Linux系统的crt1.o、libc、libgcc这类原生库,因此链接阶段报错。你之前能正常运行rs_osrm,应该是编译到了x86_64-linux-gnu这类原生目标,而非Wasm。

解决方法

方法1:调整Trunk配置适配Wasm链接

在项目根目录创建或修改Trunk.toml,添加Wasm目标的链接参数,禁用系统库依赖:

[build]
target = "wasm32-unknown-unknown"
rustflags = ["-C", "link-arg=-nostdlib"]

注意:这种方法可能导致rs_osrm的C++依赖无法正常工作,因为OSRM官方没有提供预编译的Wasm版本。

方法2:改用原生目标运行(无需Wasm场景)

如果不需要Wasm输出,直接用Rust原生命令替代trunk:

  • 构建项目:cargo build
  • 运行项目:cargo run
    这会和你之前正常运行rs_osrm的环境保持一致。

方法3:编译Wasm版本的OSRM依赖(需Wasm场景)

若确实需要Wasm版本,需自行编译OSRM的Wasm库并调整绑定:

  1. 克隆OSRM仓库,用Emscripten编译为Wasm:
    git clone https://github.com/Project-OSRM/osrm-backend.git
    cd osrm-backend && mkdir build && cd build
    emcmake cmake ..
    emmake make
    
  2. 在你的Rust项目中,通过build.rs指定链接编译好的Wasm版OSRM库。
  3. 可能需要fork rs_osrm仓库,修改绑定代码以适配Wasm环境。

方法4:更新工具链

确保系统安装完整的Wasm编译工具链,并更新trunk到新版本:

sudo apt install llvm clang libclang-dev
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --force
cargo install trunk --force

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:26:06