我正在尝试禁用死代码警告.我尝试了以下内容
cargo build -- -A dead_code
Run Code Online (Sandbox Code Playgroud)
➜rla git :(主)✗货物构建 - -A dead_code错误:参数无效.
所以我想知道如何将rustc参数传递给货物?
如果我使用Rust语言构建DLL ,它是否需要libgcc*.dll在运行时出现?
一方面:
rustc.exe已经libgcc_s_dw2-1.dll在其目录中,并且cargo.exe从http://crates.io网站下载时不会在没有dll的情况下运行;另一方面:
所以,我很困惑.什么是明确的答案?
我正在编译 Rust 代码以用作 CLI。
我希望它可以安装在尽可能广泛的x86_64-unknown-linux-gnu基础系统上,特别是 Ubuntu 系统。
我使用 docker 基础映像FROM rust:latest进行构建,但此编译主机具有 glibc v2.29。
当我尝试在另一个 Debian 系统上运行二进制文件时,(Debian GLIBC 2.28-10) 2.28它退出并出现错误:
clix: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by clix)
Run Code Online (Sandbox Code Playgroud)
那么这是否意味着我需要在旧版 Ubuntu ( ubuntu:16.04) 上进行编译才能支持 Ubuntu 16 及更高版本?
有没有一种替代方案可以让我rust:latest在旧的 Ubuntu 操作系统上进行编译并让我的二进制文件工作?
有关的:
我是 Rust 的新手,到目前为止我对它的设计感到惊讶。但我遇到了一些让我不敢在商业项目中使用它的事情。“Hello world”应用程序的可执行二进制文件的大小为 3.2Mb。
-rwxr-xr-x 2 kos kos 3,2M Jul 10 15:44 experiment_app_size
Run Code Online (Sandbox Code Playgroud)
那是巨大的!
rustc是1.53.0stable-x86_64-unknown-linux-gnu.release.我想知道将来是否计划解决这个问题?有没有一种技术可以用来减小可执行二进制文件的大小?同样的问题与 WASM 工具链相关吗?
fn main() {
println!("hello");
}
Run Code Online (Sandbox Code Playgroud)
该程序编译 600 毫秒,生成的二进制文件大小为 600KB。这是为什么?我只是在尝试 Rust,并将其与 C 进行比较。C 编译类似程序的速度会快 10 倍,而二进制输出会小 100 倍。那是为什么?
看到一个简单的程序,例如:
print_string "Hello world !\n";
Run Code Online (Sandbox Code Playgroud)
当通过ocamlopt一些非常激进的选项(使用musl)静态编译为本机代码时,在我的系统上仍约为190KB。
$ ocamlopt.opt -compact -verbose -o helloworld \
-ccopt -static \
-ccopt -s \
-ccopt -ffunction-sections \
-ccopt -fdata-sections \
-ccopt -Wl \
-ccopt -gc-sections \
-ccopt -fno-stack-protector \
helloworld.ml && { ./helloworld ; du -h helloworld; }
+ as -o 'helloworld.o' '/tmp/camlasm759655.s'
+ as -o '/tmp/camlstartupfc4271.o' '/tmp/camlstartup5a7610.s'
+ musl-gcc -Os -o 'helloworld' '-L/home/vaab/.opam/4.02.3+musl+static/lib/ocaml' -static -s -ffunction-sections -fdata-sections -Wl -gc-sections -fno-stack-protector '/tmp/camlstartupfc4271.o' '/home/vaab/.opam/4.02.3+musl+static/lib/ocaml/std_exit.o' 'helloworld.o' '/home/vaab/.opam/4.02.3+musl+static/lib/ocaml/stdlib.a' '/home/vaab/.opam/4.02.3+musl+static/lib/ocaml/libasmrun.a' -static -lm
Hello world ! …Run Code Online (Sandbox Code Playgroud) 我创建了 2 个简单的“Hello World!” 程序,一个使用 Kotlin,一个使用 Rust:
科特林:
fun main() {
println("Hello, world!")
}
Run Code Online (Sandbox Code Playgroud)
锈:
fun main() {
println("Hello, world!")
}
Run Code Online (Sandbox Code Playgroud)
我为两者生成了可执行文件:
kotlinc-native main.kt用于 Kotlin 和cargo build --releaseRust,然后使用ls -S -lh | awk '{print $5, $9}'.
我发现 Kotlin 原生生成的文件是 Rust 生成的文件大小的 1.48 倍。
为什么会存在这种差异?
fn main() {
println!("Hello, world!");
}
Run Code Online (Sandbox Code Playgroud)
此外,Rust 可以优化得更小,Kotlin 原生有没有类似的东西?
最初设定:
$ cargo new hello_world
构建:
$ cargo build
=> 589,004 bytes
优化步骤 1:
构建:
$ cargo build --release
=> 586,028 bytes
优化步骤 …
我正在尝试使用动态链接编译我的Rust项目以减小大小并在应用程序中提供.so(或Windows上的.dll)文件,就像Qt对Android一样.我读过为什么Rust可执行文件如此庞大?并编译
cargo rustc -- -C prefer-dynamic
Run Code Online (Sandbox Code Playgroud)
当我运行我的程序时,我收到此错误:
% target/debug/t_pro
target/debug/t_pro: error while loading shared libraries: libstd-a021829e87e39dcf.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud) rust ×6
compilation ×1
executable ×1
glibc ×1
kotlin ×1
libc ×1
libgcc ×1
minimum ×1
ocaml ×1
rust-cargo ×1
size ×1
windows ×1