1 个不稳定版本

0.2.1 2023年11月14日
0.2.0 2023年11月14日
0.1.0 2023年11月13日

#75 in #call

GPL-3.0-or-later

335KB
4K SLoC

C++ 2K SLoC // 0.1% comments Shell 1K SLoC // 0.1% comments M4 687 SLoC // 0.1% comments Rust 236 SLoC // 0.0% comments Automake 166 SLoC // 0.1% comments C 44 SLoC // 0.0% comments GNU Style Assembly 20 SLoC // 0.3% comments

包含 (ELF 可执行文件/库, 230KB) overlapping-segments-after-rounding, (ELF 可执行文件/库, 170KB) patchelf/tests/short-first-segment.gz, (ELF 库, 67KB) libtest.so, (ELF 可执行文件/库, 67KB) patchelf/tests/endianness/ppc64/main, (ELF 库, 67KB) libtest.so, (ELF 可执行文件/库, 67KB) patchelf/tests/endianness/ppc64le/main 和更多23个

patchelf-rs

Crates.io docs.rs

Rust 对 patchelf 的 FFI,我们可以直接以一种不拘小节的方式调用 patchelf。

[dependencies]
patchelf = "0.2.1"

用法

  • 设置 soname
PatchElf::config()
   .input("libpng.so")
   .output("libpng2.so")
   .set_soname("libpng2.so")
   .patch();
  • 打印 soname
PatchElf::config()
   .input("libz.so")
   .print_soname()
   .patch();

更多信息请参考 文档


lib.rs:

Rust 对 patchelf 的 FFI

打印 soname 的示例。

PatchElf::config()
    .input("libpng.so")
    .print_soname()
    .patch();

设置 soname 的示例。

PatchElf::config()
    .input("libpng.so")
    .output("libpng2.so")
    .set_soname("libpng2.so")
    .patch();

无运行时依赖