Shared Libraries .so Erstellen mit Rust
Warum mit Rust
Rust ist eine moderne Programmiersprache, die die Sicherheit von C und C++ mit der Produktivität von Sprachen wie Python und Ruby kombiniert. Rust ist eine gute Wahl für die Erstellung von Shared Libraries, da es eine gute Unterstützung für die Erstellung von Shared Libraries bietet.
Um eine Shared Library mit Rust zu erstellen, müssen Sie die folgenden Schritte ausführen:
- Erstellen Sie ein neues Rust-Projekt mit `cargo new start --lib`.
- Fügen Sie die folgenden Zeilen zur `Cargo.toml`-Datei hinzu:
[lib] name = "my_rust_lib" crate-type = ["cdylib"]
- Erstellen Sie eine neue Datei `src/lib.rs` und fügen Sie den folgenden Code hinzu:
#[no_mangle] pub extern "C" fn add(a: i32, b: i32) -> i32 { a + b }
- Führen Sie `cargo build` aus, um die Shared Library zu erstellen. Die Shared Library wird im `target/debug`-Verzeichnis erstellt.
Um die erstellte Shared Library in C zu verwenden, müssen Sie die folgenden Schritte ausführen:
- Erstellen Sie eine neue Datei `main.c` und fügen Sie den folgenden Code hinzu:
#include <stdio.h> #include "my_rust_lib.h" int main() { int result = add(1, 2); printf("Result: %d\n", result); return 0; }
Header-Datei generieren
cbindgen
cbindgen ist ein Tool, das automatisch C-Header-Dateien aus Rust-Code generiert. Sie können cbindgen verwenden, um den C-Header für Ihre Rust-Shared-Library zu generieren.
cbindgen Installation
cargo install cbindgen
Erstellt eine cbindgen.toml-Datei
language = "C"
Erstellt eine Header-Datei
cbindgen --config cbindgen.toml --crate thorsten --output thorsten.h