在Ubuntu下,Rust可以通過FFI(外部函數接口)與C語言互操作。以下是一些基本步驟:
首先,你需要創建一個C庫,以便Rust可以調用其中的函數。你可以使用任何文本編輯器創建一個C源文件,例如hello.c,并添加以下代碼:
#include <stdio.h>
void hello_from_c() {
printf("Hello from C!\n");
}
然后,使用以下命令編譯C源文件,生成共享庫:
gcc -fPIC -shared -o libhello.so hello.c
這將在當前目錄下生成一個名為libhello.so的共享庫。
接下來,在Rust中調用C函數。首先,在Cargo.toml文件中添加以下依賴項:
[dependencies]
libc = "0.2"
然后,在Rust代碼中,使用extern關鍵字聲明要調用的C函數,并使用unsafe塊來調用它。例如,在main.rs文件中添加以下代碼:
extern crate libc;
use libc::c_void;
#[link(name = "hello", kind = "dylib")]
extern "C" {
fn hello_from_c();
}
fn main() {
unsafe {
hello_from_c();
}
}
這里,我們使用#[link(name = "hello", kind = "dylib")]屬性來鏈接到之前創建的libhello.so共享庫。然后,我們聲明了一個名為hello_from_c的外部函數,并在unsafe塊中調用它。
最后,使用以下命令編譯并運行Rust程序:
cargo build
cargo run
如果一切順利,你應該會看到以下輸出:
Hello from C!
這就是在Ubuntu下使用Rust與C語言互操作的基本過程。你可以根據需要擴展這個示例,例如傳遞參數或返回值。