因此,作为普通用户,我们使用第一种方法(Rust 1.44使用了第二种方法解决了这个事情)。 解决方法就是关闭rustc在链接时crt-static的flag, 让我们可以动态链接到musl-libc: RUSTFLAGS="-C target-feature=-crt-static" cargo build 这样,就可以顺利地进行动态链接从而编译了。 问题二 在设立了-crt-static的flag之后...
2. 对于linux-gnu目标平台类型的则自Rust1.19后则可通过传递-C target-feature=+crt-static参数给rus...
如果重定位模型是pic,并且当前目标支持地址无关可执行文件(PIE),则将指示链接器生成一个(地址无关可执行文件)。 如果目标不支持地址无关且静态链接的可执行文件,那么-C target-feature=+crt-static会 “超过”-C relocation-model=pic,并指示链接器(-static)生成静态链接但不是地址无关的可执行文件。 remark 该...
RUSTFLAGS='-C target-feature=+crt-static'cargo build --release --target x86_64-unknown-linux-gnuRUSTFLAGS='-C target-feature=+crt-static'cargo build --release --target x86_64-unknown-linux-muslTARGET_CC=i686-w64-mingw32-gcc RUSTFLAGS='-C target-feature=+crt-static'cargo build --releas...
rustc -Ctarget-feature=+crt-static main.rs 1. 或者 set -Ctarget-feature=+crt-static cd project cargo project --target i686-pc-windows-msvc 1. 2. 3. 编译xp目标rust程序推荐方法 把如下代码保存在bat脚本文件中,打开脚本后,直接使用cargo build或者cargo run就可以了 ...
其实glibc 的软件, 或者是 linux-gnu 的 target 也能用 crt-static, 但是会有问题。 根据我的经验,gnu 对于静态链接的支持没有 musl 好。 在没有特殊的情况下,静态编译的 musl 软件, 可以直接给 android 用;而静态编译的 glibc 软件,大部分需要做一些处理才能给 android 用。 .cargo/config.toml [target....
}#[cfg(not(target_feature ="crt-static"))]fnfoo() {println!("C运行时应该被动态链接"); } 还请注意,Cargo构建脚本可以通过环境变量来检测此特性。在构建脚本中,您可以通过如下代码检测链接类型: usestd::env;fnmain() {letlinkage = env::var("CARGO_CFG_TARGET_FEATURE").unwrap_or(String::new(...
这也支持特性+crt-static和-crt-static来控制静态C运行时链接。创建一个名为.cargo/config.toml的文件...
}#[cfg(not(target_feature ="crt-static"))]fnfoo() {println!("C运行时应该被动态链接"); } 还请注意,Cargo构建脚本可以通过环境变量来检测此特性。在构建脚本中,您可以通过如下代码检测链接类型: usestd::env;fnmain() {letlinkage = env::var("CARGO_CFG_TARGET_FEATURE").unwrap_or(String::new(...
FROM rust:alpine3.16 # This is important, see https://github.com/rust-lang/docker-rust/issues/85 ENV RUSTFLAGS="-C target-feature=-crt-static" RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories # if needed, add additional dependencies her...