相关疑难解决方法(0)

如何将防锈标志传递给货物?

我正在尝试禁用死代码警告.我尝试了以下内容

cargo build -- -A dead_code
Run Code Online (Sandbox Code Playgroud)

➜rla git :(主)✗货物构建 - -A dead_code错误:参数无效.

所以我想知道如何将rustc参数传递给货物?

rust rust-cargo

11
推荐指数
1
解决办法
7840
查看次数

使用Rust构建的DLL是否在运行时需要libgcc.dll?

如果我使用Rust语言构建DLL ,它是否需要libgcc*.dll在运行时出现?

一方面:

  • 我在互联网上的某个地方看到了一个帖子,声称是的;
  • rustc.exe已经libgcc_s_dw2-1.dll在其目录中,并且cargo.exehttp://crates.io网站下载时不会在没有dll的情况下运行;

另一方面:

  • 我看过有关在Rust中构建玩具操作系统内核的文章,因此他们肯定不需要存在libgcc动态库.

所以,我很困惑.什么是明确的答案?

windows rust libgcc

5
推荐指数
1
解决办法
1817
查看次数

我应该在旧的 Ubuntu 版本上进行编译以获得最大的“glibc”可移植性吗?

我正在编译 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 操作系统上进行编译并让我的二进制文件工作?

有关的:

glibc libc rust

5
推荐指数
1
解决办法
757
查看次数

如何优化原生和 WASM 工具链的可执行二进制文件的大小?

我是 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)

那是巨大的!

  • 的版本rustc1.53.0
  • 工具链是stable-x86_64-unknown-linux-gnu.
  • 目标是release.

我想知道将来是否计划解决这个问题?有没有一种技术可以用来减小可执行二进制文件的大小?同样的问题与 WASM 工具链相关吗?

rust

4
推荐指数
1
解决办法
2297
查看次数

Rust 最小编译程序大小

fn main() {
    println!("hello");
}
Run Code Online (Sandbox Code Playgroud)

该程序编译 600 毫秒,生成的二进制文件大小为 600KB。这是为什么?我只是在尝试 Rust,并将其与 C 进行比较。C 编译类似程序的速度会快 10 倍,而二进制输出会小 100 倍。那是为什么?

rust

3
推荐指数
1
解决办法
1507
查看次数

如何获得最小的ocamlopt编译本机二进制文件?

看到一个简单的程序,例如:

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)

size executable ocaml compilation minimum

2
推荐指数
1
解决办法
76
查看次数

为什么 Kotlin 本地可执行文件比等效的 Rust 可执行文件大?

我创建了 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

优化步骤 …

kotlin kotlin-native

1
推荐指数
1
解决办法
1392
查看次数

Rust标准库的共享库和静态库在哪里?

我正在尝试使用动态链接编译我的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)

dynamic-linking rust

1
推荐指数
2
解决办法
360
查看次数