CentOS 6.20编译Rust程序时clang-sys v1.6.1构建失败求助
问题
在内核版本6.20的CentOS系统中构建Rust程序atropos,执行命令:
cargo build --manifest-path=atropos/Cargo.toml --release
时触发clang-sys v1.6.1自定义构建失败,报错核心为could not find any static libraries,完整错误日志及RUST_BACKTRACE=1回溯信息如下:
错误日志
cargo build --manifest-path=atropos/Cargo.toml --release Compiling proc-macro2 v1.0.56 Compiling unicode-ident v1.0.8 Compiling quote v1.0.26 Compiling libc v0.2.141 Compiling autocfg v1.1.0 Compiling version_check v0.9.4 Compiling syn v1.0.109 Compiling serde_derive v1.0.159 Compiling cc v1.0.79 Compiling bitflags v1.3.2 Compiling hashbrown v0.12.3 Compiling serde v1.0.159 Compiling pkg-config v0.3.26 Compiling memchr v2.5.0 Compiling toml_datetime v0.6.1 Compiling thiserror v1.0.40 Compiling winnow v0.4.1 Compiling once_cell v1.17.1 Compiling io-lifetimes v1.0.10 Compiling cfg-if v1.0.0 Compiling rustix v0.37.7 Compiling proc-macro-error-attr v1.0.4 Compiling proc-macro-error v1.0.4 Compiling indexmap v1.9.3 Compiling glob v0.3.1 Compiling heck v0.4.1 Compiling anyhow v1.0.70 Compiling memoffset v0.6.5 Compiling camino v1.1.4 Compiling linux-raw-sys v0.3.1 Compiling serde_json v1.0.95 Compiling clang-sys v1.6.1 Compiling semver v1.0.17 Compiling aho-corasick v0.7.20 Compiling syn v2.0.13 Compiling regex-syntax v0.6.29 Compiling itoa v1.0.6 Compiling log v0.4.17 Compiling libbpf-sys v1.1.1+v1.1.0 Compiling minimal-lexical v0.2.1 Compiling os_str_bytes v6.5.0 Compiling ryu v1.0.13 Compiling nom v7.1.3 Compiling toml_edit v0.19.8 Compiling clap_lex v0.2.4 error: failed to run custom build command for `clang-sys v1.6.1` Caused by: process didn't exit successfully: `/root/sched_ext/tools/sched_ext/atropos/target/release/build/clang-sys-eaa3a1b9c03ac901/build-script-build` (exit status: 101) --- stderr thread 'main' panicked at 'could not find any static libraries', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/clang-sys-1.6.1/build/static.rs:92:9 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace warning: build failed, waiting for other jobs to finish... make: *** [Makefile:201: atropos] Error 101
回溯信息
error: failed to run custom build command for `clang-sys v1.6.1` Caused by: process didn't exit successfully: `/root/sched_ext/tools/sched_ext/atropos/target/release/build/clang-sys-eaa3a1b9c03ac901/build-script-build` (exit status: 101) --- stderr thread 'main' panicked at 'could not find any static libraries', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/clang-sys-1.6.1/build/static.rs:92:9 stack backtrace: 0: std::panicking::begin_panic 1: build_script_build::static::find 2: build_script_build::static::link 3: build_script_build::main 4: core::ops::function::FnOnce::call_once
错误原因
- 缺少Clang静态库文件:clang-sys v1.6.1默认尝试链接Clang的静态库,但CentOS默认安装的Clang通常仅包含动态库,未提供
libclang.a这类静态版本。 - 构建配置强制静态链接:atropos的依赖链中,上游库显式启用了clang-sys的静态链接特性,导致构建脚本必须找到静态库才能继续。
- 环境变量未指向静态库路径:即使系统存在Clang静态库,若未通过
LIBCLANG_PATH等变量告知clang-sys,也会触发找不到库的错误。
解决方法
方法一:安装Clang静态开发包
CentOS下通过yum安装包含静态库的Clang开发组件:
yum install -y epel-release yum install -y clang-devel llvm-devel
注:若提示找不到包,需先启用EPEL源(即第一条命令)。
方法二:强制clang-sys使用动态链接
通过环境变量让clang-sys放弃静态链接,改用动态库:
export CLANG_SYS_STATIC=0 cargo build --manifest-path=atropos/Cargo.toml --release
若需要永久生效,可将export CLANG_SYS_STATIC=0添加到~/.bashrc或/etc/profile中。
方法三:手动指定Clang静态库路径
如果已手动编译安装带静态库的Clang,通过环境变量指定路径:
export LIBCLANG_PATH=/path/to/your/clang/static/libs cargo build --manifest-path=atropos/Cargo.toml --release
替换/path/to/your/clang/static/libs为实际的静态库目录(通常是llvm/lib或clang/lib)。
内容的提问来源于stack exchange,提问作者Perry
相关产品推荐
相关产品推荐

