This-Is-C 是一个由 Rust 开发的命令行工具,其作用是将二进制可执行文件转化成 C 语言代码。
应用场景之一是让你在只能使用 C 语言的 sb 课程上开心地使用其它语言。
你需要拥有 Rust 环境和 Cargo。在项目目录下运行下面的命令:
cargo build --release编译完成后,可执行文件会输出到 target/release/this-is-c。你可以把这个文件拷贝到其它位置,并将存放路径添加到 PATH 环境变量以方便使用。
运行 this-is-c --help 可以查看命令行选项信息。
本项目的原理是把二进制文件内嵌到 C 代码中并通过一些系统级操作来运行它,所以会有如下的限制:
- 仅支持 Linux 系统。
- 目标平台的运行环境下没有对这些 syscall 的限制。
- 你要转化的二进制文件必须和目标平台(如 OJ)兼容。为此你可能需要交叉编译。
- 二进制文件的动态链接库和目标平台兼容。你可以通过静态链接来避免这个问题。
- 文件体积可能超过 OJ 允许的最大提交大小。