mag*_*gu_
6
rust
rust-cargo
我目前有一个主要应用程序,其中的某些部分可以“实时修补”。例如。一些具有预定义名称和签名的函数可以在运行时更新。目前,重新修补是通过以下两个步骤执行的:
- 使用 std::process::Command 调用 rustc 从源代码编译 cdylib。每个输出文件都有一个新名称,以确保 dlopen 不会使用缓存的旧文件
- 使用 libloading 加载并运行新修补的函数
由于几个原因,这显然并不理想。我的问题是是否有更好的方法来实现这一目标?例如,从 Rust 内部进行编译。
附加信息:
- 补丁文件不需要任何外部 crate
- 补丁文件需要了解一些常见的库模块,这些模块不会实时修补