我可以使用cargo run --release
编译和运行Rust项目,没有任何问题。作为第二步,我只想使用cargo build --release
创建二进制文件,然后通过运行./target/release/crate_name
(也解释为here)来执行它。执行二进制文件会导致找不到某些共享库的行为。这是我的Cargo.toml
:
[package]
name = "onnx-test"
version = "0.1.0"
edition = "2023"
[dependencies]
actix-web = "4"
futures = "0.3.26"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
onnxruntime = "0.0.14"
image = "0.24.5"
imageproc = "0.23.0"
rusttype = "0.9.3"
lazy_static = "1.4.0"
base64 = "0.21.0"
actix-cors = "0.6.4"
derive_more = "0.99.17"
actix-web-validator = "5.0.1"
validator = { version = "0.16", features = ["derive"] }
regex = "1.5.6"
这是错误消息:
error while loading shared libraries: libonnxruntime.so.1.8.1: cannot open shared object file: No such file or directory
所以我的问题是,cargo run --release
是否隐式地链接了一些库?我的意思是库在target/release/build/...
路径中的某个地方进行了编译。通过提供--verbose
标志,我没有发现任何东西。
以下是target/release
的内容:
build/
deps/
examples/
incremental/
onnx-test
onnx-test.d
1条答案
按热度按时间yc0p9oo01#
是的。行为记录在案。
Cargo还在编译和运行二进制文件时使用
cargo run
和cargo test
等命令设置动态库路径。这有助于定位构建过程中的共享库。这是当前的实现。