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

Rust 可执行文件实际需要目标目录中的哪些文件?,rust,rust-cargo,Rust,Rust Cargo,编译完我的程序“zagir”后,发布文件夹的大小超过了200MB,这对于我编写的程序来说是荒谬的。因此,我试图检查是否只有“zagir”可执行文件是孤立运行的,它确实是这样 但令人困惑的是,release文件夹还包括libzagir.rlib文件以及.d文件和其他一些文件夹 它们到底是什么 真的需要吗 当这些文件被忽略时,我会在执行过程中出错吗 对于一个完整的可执行文件,我应该捆绑哪些文件 Cargo.toml [package] authors = ["Sharad Chand"] name

编译完我的程序“zagir”后,发布文件夹的大小超过了200MB,这对于我编写的程序来说是荒谬的。因此,我试图检查是否只有“zagir”可执行文件是孤立运行的,它确实是这样

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

  • 它们到底是什么
  • 真的需要吗
  • 当这些文件被忽略时,我会在执行过程中出错吗
  • 对于一个完整的可执行文件,我应该捆绑哪些文件
  • 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"
    
    可执行文件实际需要目标目录中的哪些文件

    除了可执行文件本身,它们都没有。默认情况下,Rust生成静态链接的二进制文件

    其他文件只是由Cargo维护的构建工件,目的是使重建代码更高效。它们包括像依赖关系这样的东西

    您可能会发现的某些文件的非详尽抽样:

    • *.d
      -使文件兼容依赖项列表
    • *.rlib
      -生锈库文件。包含依赖项的已编译代码
    • build
      -用于生成脚本作为临时空间的目录
    • deps
      -编译的依赖项
    • examples
      -来自
      examples
      目录的二进制文件
    • incremental
      -增量编译缓存的目录
    • *-{hash}
      -来自
      货物测试的二进制文件
    • 可执行文件-您的目标二进制文件

    其中一些是有文档记录的。

    请发布您的项目的Cargo.toml文件。我在
    target/release/deps
    中也有
    rlibs
    。我相信这“一串”其他文件主要由
    Cargo
    使用,以避免在后续构建中重复操作。例如,“deps”包含用于构建可执行文件的依赖项。项目中可能还有其他元数据,允许cargo进行增量构建,而不是每次都重建所有内容(例如指纹文件夹)。不幸的是,我找不到主题尼斯答案上的任何相关文档,只是出于好奇,你有提到这一切的文档链接吗?@Adonis没有,但来源中有一些信息(我现在链接了)。我不认为特定的文件布局被认为是“公共API”,所以我并不真正期望公共文档。