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

Termux中Rust编译Hello World找不到std/core及crate查找机制咨询

问题解决:Termux下Rust编译找不到std/core crate

Rust查找Crate的核心机制

Rust编译器rustc查找标准库(std、core等)的逻辑是:

  • 优先读取sysroot路径,这是标准库的安装根目录,默认由rustup管理,但Termux不支持rustup,所以必须手动指定或自行构建标准库。
  • 标准库的目录结构要求严格:sysroot下必须存在lib/rustlib/<目标架构>/lib,且该目录下要有libstd-*.rlib、libcore-*.rlib这类核心库文件。你当前路径下只有宏相关库,说明标准库根本没正确安装。
  • RUSTFLAGS="-L <路径>"仅用于添加额外的第三方库搜索路径,无法替代sysroot的作用——因为标准库的查找优先级高于-L指定的路径,且缺少完整的标准库文件,所以这个设置无效。

必须为Android目标编译Rust标准库

由于Termux无法通过rustup获取预编译的Android标准库,只能手动从源码构建:

  1. 安装构建依赖
    在Termux中执行以下命令安装必要工具:

    pkg install build-essential curl git python3
    
  2. 克隆Rust源码仓库

    git clone https://github.com/rust-lang/rust.git
    cd rust
    
  3. 配置构建参数
    在Rust源码根目录创建config.toml文件,内容如下(适配aarch64-linux-android架构):

    [build]
    target = ["aarch64-linux-android"]
    rustc = true
    cargo = true
    
    [target.aarch64-linux-android]
    linker = "aarch64-linux-android-clang"
    

    注:Termux自带的clang已经适配Android目标,无需额外配置交叉编译工具链。

  4. 构建并安装标准库
    执行构建命令(stage 1足够满足基础编译需求):

    ./x.py build --stage 1
    ./x.py install --stage 1
    

    构建完成后,标准库会被安装到./build/aarch64-linux-android/stage1路径下。之后编译代码时,需要指定该路径作为sysroot:

    rustc --sysroot ./build/aarch64-linux-android/stage1 src/main.rs
    

    也可以将sysroot路径加入环境变量,避免每次编译都手动指定:

    export SYSROOT=$(pwd)/build/aarch64-linux-android/stage1
    rustc --sysroot $SYSROOT src/main.rs
    

验证标准库是否安装成功

检查构建后的sysroot路径下的lib/rustlib/aarch64-linux-android/lib目录,确认存在libstd-*.rlib、libcore-*.rlib等核心库文件,这才是完整可用的标准库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 06:40:10