溫馨提示×

Ubuntu下Rust如何與C語言互操作

小樊
46
2025-09-12 19:55:07
欄目: 編程語言

在Ubuntu下,Rust可以通過FFI(外部函數接口)與C語言互操作。以下是一些基本步驟:

  1. 創建一個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的共享庫。

  1. 在Rust中調用C函數

接下來,在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塊中調用它。

  1. 運行Rust程序

最后,使用以下命令編譯并運行Rust程序:

cargo build
cargo run

如果一切順利,你應該會看到以下輸出:

Hello from C!

這就是在Ubuntu下使用Rust與C語言互操作的基本過程。你可以根據需要擴展這個示例,例如傳遞參數或返回值。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女