You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下Bevy Release可执行文件运行失败:缺失libbevy_dylib

解决Bevy项目Release构建后动态链接库缺失问题

问题原因

Bevy默认在Linux平台下启用dynamic_linking特性,会将核心库编译为动态链接库(libbevy_dylib-*.so),导致生成的可执行文件运行时依赖该动态库,分发时容易出现找不到文件的错误。

解决方案

1. 修改Cargo.toml禁用动态链接特性

打开项目根目录的Cargo.toml,修改bevy依赖配置:禁用默认特性(默认包含dynamic_linking),手动启用项目需要的特性并添加static_linking支持:

[dependencies]
bevy = { version = "0.14", default-features = false, features = [
  # 基础核心特性
  "bevy_core",
  "bevy_app",
  "bevy_ecs",
  # 根据项目需求选择,比如2D开发需添加:
  "bevy_2d",
  "bevy_sprite",
  "bevy_ui",
  # 其他常用特性
  "bevy_window",
  "bevy_input",
  "bevy_asset",
  "bevy_render",
  "bevy_scene",
  # 启用静态链接支持
  "static_linking",
] }
mo_editor = { path = "crates/mo_editor" }
mo_std = { path = "crates/mo_std" }

若不确定需要哪些特性,可参考Bevy默认特性列表,仅排除dynamic_linking即可。默认特性包含bevy_render、bevy_sprite、bevy_ui等常用功能。

2. (可选)配置完全静态链接系统库

如果需要生成完全不依赖系统共享库的可执行文件,修改config.toml中Linux目标的配置:

[target.x86_64-unknown-linux-gnu]
linker = "clang"
rustflags = [
    "-Clink-arg=-fuse-ld=lld",
    "-C target-feature=+crt-static", # 静态链接C标准库
]

执行此配置前,需确保Ubuntu系统安装了静态系统库,可通过以下命令安装:

sudo apt install libc6-dev libstdc++-dev

3. 重新构建并验证

执行Release构建命令:

cargo build --release

构建完成后,用ldd检查可执行文件依赖:

ldd target/release/BevyPractice

若输出中无libbevy_dylib-*.so,说明配置成功;完全静态链接的可执行文件会显示not a dynamic executable。

此时生成的可执行文件可直接分发,无需附带额外动态库。

内容的提问来源于stack exchange,提问作者monok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:35:12