Skip to content

EMU-TLS

对于 llvm 15 或者更高的版本, emu-tls 以及相关的 symbol 符号已经被移动到了 libc++.so and libclang_rt.builtins.a 文件中。因此如果你出现了类似于下面的这种报错,请考虑新增链接文件:

Error

__emutls_get_address: symbol not found

如何解决?

在构建脚本中链接对应的内置动态/静态链接库即可:

rust
// build.rs

fn main() {
    println!("cargo:rustc-link-lib=c++");
    // or
    // println!("cargo:rustc-link-lib=static=clang_rt.builtins");
}

x86_64

当构建 x64_64 架构的产物时,我们可能会遇到如下的报错:

error

在你的项目中新增文件.cargo/config.toml并且添加如下内容:

toml
[unstable]
build-std-features = ["compiler-builtins-weak-intrinsics"]