温馨提示×

Ubuntu下Rust如何与C语言互操作

小樊
51
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