可执行文件实际上需要目标目录中的哪些文件?

csh*_*rad 10 rust rust-cargo

在编译我的程序'zagir'之后,release文件夹的大小超过200MiB,这对于我编写的程序来说是荒谬的.所以,我试图检查是否只有'zagir'可执行文件是孤立运行的.

但令人困惑的是,release文件夹还包含libzagir.rlib文件以及.d文件和一堆其他文件夹.

  1. 究竟是什么?
  2. 他们真的需要吗?
  3. 当这些文件被忽略时,我会在执行期间得到错误吗?
  4. 我应该为完整的可执行文件捆绑哪些文件?

Cargo.toml

[package]
authors = ["Sharad Chand"]
name = "zagir"
version = "0.1.0"

[dependencies]
bcrypt = "0.1.3"
dotenv = "0.10.1"
image = "0.17.0"
log = "0.3.8"
r2d2 = "0.7.3"
r2d2-diesel = "0.16.0"
rand = "0.3.16"
rocket = "0.3.2"
rocket_codegen = "0.3.2"
serde = "1.0.11"
serde_derive = "1.0.11"
serde_json = "1.0.2"
validator = "0.6.0"
validator_derive = "0.6.0"

[dependencies.bigdecimal]
features = ["serde"]
version = "0.0.10"

[dependencies.chrono]
features = ["serde"]
version = "0.4.0"

[dependencies.diesel]
features = [
    "mysql",
    "chrono",
    "unstable",
    "numeric",
    "huge-tables",
]
version = "0.16.0"

[dependencies.diesel_codegen]
features = ["mysql"]
version = "0.16.0"

[dependencies.rocket_contrib]
features = ["handlebars_templates"]
version = "0.3.2"

[dependencies.uuid]
features = ["v4"]
version = "0.4"
Run Code Online (Sandbox Code Playgroud)

She*_*ter 14

可执行文件实际上需要目标目录中的哪些文件

除了可执行文件本身之外,它们都不是.默认情况下,Rust生成静态链接的二进制文件.

其他文件仅仅是由Cargo维护的构建工件,以便更有效地重建代码.它们包括你的依赖项之类的东西.

您可能会找到的一些文件的非详尽示例:

  • *.d - 与Makefile兼容的依赖项列表
  • *.rlib - Rust库文件.包含依赖项的已编译代码
  • build - 用作临时空间的构建脚本的目录
  • deps - 您编译的依赖项
  • examples- examples目录中的二进制文件
  • incremental - 增量编译缓存的目录
  • *-{hash} - 来自的二进制文件 cargo test
  • executables - 你的目标二进制文件

其中一些内容记录在Cargo源代码中.