Shared Libraries .so Erstellen mit Rust

Aus ahrensburg.city
Version vom 7. Januar 2025, 04:17 Uhr von Thorsten (Diskussion | Beiträge) (// via Wikitext Extension for VSCode)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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.

Erstellen einer Shared Library mit Rust

Um eine Shared Library mit Rust zu erstellen, müssen Sie die folgenden Schritte ausführen:

  1. Erstellen Sie ein neues Rust-Projekt mit `cargo new start --lib`.
  2. Fügen Sie die folgenden Zeilen zur `Cargo.toml`-Datei hinzu:
[lib]
name = "my_rust_lib"
crate-type = ["cdylib"]
  1. 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
}
  1. Führen Sie `cargo build` aus, um die Shared Library zu erstellen. Die Shared Library wird im `target/debug`-Verzeichnis erstellt.

Verwenden der Shared Library in C

Um die erstellte Shared Library in C zu verwenden, müssen Sie die folgenden Schritte ausführen:

  1. 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