主要观点:C2Rust 可帮助将符合 C99 标准的代码迁移到 Rust,其翻译器 c2rust transpile
生成的不安全 Rust 代码紧密反映输入的 C 代码,主要目标是保留功能,测试套件在翻译后应继续通过,但生成安全且符合习惯的 Rust 代码仍需手动工作,目前正在研究自动化部分工作。提供了多种安装方式(从 crates.io 安装、从 Git 安装)、翻译 C 到 Rust 的步骤(使用 compile_commands.json
文件等)、生成 compile_commands.json
文件的方法(通过 cmake
、meson
、intercept-build
、bear
、compiledb
等),还介绍了联系团队的方式(问题追踪器、discord 频道、邮箱)以及一些常见问题和许可信息。
关键信息:
- 支持的平台:macOS 和 Linux,跨编译暂不支持。
- 安装要求:LLVM 7 或更高版本、Python 3.6 或更高版本、CMake 3.4.3 或更高版本、openssl (1.0)。
- 安装方式:
cargo install c2rust
等,需根据平台设置LLVM_CONFIG_PATH
。 - 翻译步骤:使用
c2rust transpile
命令,配合compile_commands.json
文件等。 - 生成文件方法:通过
cmake
、meson
、intercept-build
、bear
、compiledb
等工具。
重要细节: - 翻译器生成的 Rust 文件通过 C API 导出和导入函数,不会像正常 Rust 模块那样直接相互依赖。
- 翻译器有已知限制,会对无法翻译的函数定义发出警告并尝试跳过。
- 开发者文档提供了更多关于构建系统的细节。
- 材料基于 BSD-3 风格许可证,C2Rust 翻译器受 Jamey Sharp 的 Corrode 翻译器启发,依赖 Emscripten 的 Relooper 算法。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。