Debian 下 Rust 编译失败的排查与修复
一 快速自检与环境准备
二 高频错误与对应修复
链接器未找到:报错包含 “linker ‘cc’ not found”
原因:系统缺少 C 编译器与链接器。
修复:sudo apt install -y build-essential(提供 cc/gcc/ld)。如使用 WSL 的 Debian,同样安装该包即可。
OpenSSL 依赖问题:构建日志出现 “openssl-sys …”、找不到头文件或链接失败
原因:缺少 pkg-config、libssl-dev 或 clang/llvm,或项目需要 cmake。
修复:sudo apt install -y cmake pkg-config libssl-dev git clang libclang-dev llvm,然后重试构建。
Wasm 目标缺失:区块链/Substrate 项目常见 “target wasm32-unknown-unknown not found”
原因:未安装 nightly 工具链或未添加 Wasm 目标。
修复:rustup update nightly && rustup target add wasm32-unknown-unknown --toolchain nightly,再用 nightly 构建(cargo +nightly build 或设置工具链)。
内存不足被系统终止:构建中出现 “signal: 9, SIGKILL”
原因:并行编译占用内存过高。
修复:增加交换空间(示例:sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile),或使用更省内存的选项(如减少并行度、cargo build --release --no-default-features)。
交叉编译 OpenSSL 失败:找不到头文件或链接时报 “relocation … can not be used when making a shared object; recompile with -fPIC”
原因:交叉编译的 OpenSSL 未启用 shared(未生成 PIC)。
修复:为目标架构交叉编译 OpenSSL 时带上 shared,例如:./config shared && make;随后通过环境变量指向产物:export OPENSSL_LIB_DIR=…/lib OPENSSL_INCLUDE_DIR=…/include,再 cargo build --target=…。
三 通用定位技巧