商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > CentOS系统中Rust与C语言如何互操作

CentOS系统中Rust与C语言如何互操作

  发布于2026-07-18 阅读(0)

扫一扫,手机访问

在CentOS系统里,让Rust和C语言通过FFI(即外部函数接口)愉快地协作,其实并没有想象中那么神秘。下面一步步拆解这个过程,照着走一遍就能跑通。

CentOS系统中Rust与C语言如何互操作

1. 安装Rust

第一步自然是确保Rust已经安装妥当。如果还没装,运行下面这条命令即可:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安装完成后,记得重新加载一下shell配置文件,让环境变量生效:

source $HOME/.cargo/env

2. 创建Rust项目

新建一个Rust库项目,名字可以随意取,这里用my_rust_lib

cargo new --lib my_rust_lib
cd my_rust_lib

3. 配置Cargo.toml

为了让Rust代码能被C语言调用,需要在Cargo.toml里指定库类型为动态链接库,并引入libc依赖:

[lib]
name = "my_rust_lib"
crate-type = ["cdylib"]

[dependencies]
libc = "0.2"

4. 编写Rust代码

src/lib.rs中,用extern "C"块声明外部可调用的函数,并加上#[no_mangle]防止名称被编译器改写:

#[no_mangle]
pub extern "C" fn rust_function() {
    println!("Hello from Rust!");
}

5. 编译Rust代码为动态链接库

执行编译命令,生成.so文件:

cargo build --release

编译完成后,在target/release目录下就能找到那个.so文件了。

6. 编写C代码

创建一个C文件(比如main.c),先声明Rust函数的原型,然后在main里调用它:

#include 

// 声明Rust函数
void rust_function();

int main() {
    printf("Calling Rust function...\n");
    rust_function();
    return 0;
}

7. 编译C代码并链接Rust库

用gcc编译C代码,并链接上刚才生成的动态库:

gcc -o main main.c -Ltarget/release -lmy_rust_lib -lpthread -ldl

这里-L指定了库的搜索路径,-l指定库名(去掉前缀lib和后缀.so)。

8. 运行程序

跑一下生成的可执行文件:

./main

正常的话,你会看到:

Calling Rust function...
Hello from Rust!

注意事项

  • ABI兼容性:Rust和C的调用约定必须一致,使用extern "C"就是指定C的ABI。
  • 名称修饰:#[no_mangle]是必选项,否则Rust编译器会搞出一些奇奇怪怪的名称,C端就找不到函数了。
  • 链接路径:指定库路径时,-L后面跟着的路径要确保正确,库名称也要对应上。

按照这个流程操作,CentOS上的Rust与C互操作就能顺利跑通。实际项目中,你还可以在Rust端调用C库的函数,原理类似,把extern "C"块里的声明换成C函数的声明就行了。

本文转载于:https://www.yisu.com/ask/19505597.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注