Какие файлы из целевого каталога действительно требуются исполняемому файлу?

После компиляции моей программы "zagir" папка релиза имеет размер более 200 МБ, что нелепо для написанной мною программы. Итак, я попытался проверить, работает ли только исполняемый файл zagir изолированно, и он это сделал.

Но путаница заключается в том, что папка релиза также содержит файл 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"

1 ответ

Решение

Какие файлы из целевого каталога действительно требуются для исполняемого файла

Ни один из них, кроме самого исполняемого файла. По умолчанию Rust создает статически связанные двоичные файлы.

Другие файлы - это просто артефакты сборки, поддерживаемые Cargo, чтобы сделать перестройку вашего кода более эффективной. Они включают в себя такие вещи, как ваши зависимости.

Неисчерпывающая выборка некоторых файлов, которые вы можете найти:

  • *.d - Makefile-совместимые списки зависимостей
  • *.rlib - Ржавчина файлов библиотеки. Содержат скомпилированный код зависимости
  • build - Каталоги для скриптов сборки, которые можно использовать как пустое место.
  • deps - Ваши скомпилированные зависимости
  • examples - Двоичные файлы из examples каталог
  • incremental - Каталог для кэша инкрементной компиляции
  • *-{hash} - двоичные файлы из cargo test
  • исполняемые файлы - Ваши целевые исполняемые файлы

Часть этого документирована в исходном коде Cargo.

Другие вопросы по тегам