building your own rustc_driver
a day ago
- 运行 `cargo clippy` 涉及多层间接:rustup 代理、cargo 扩展和 clippy-driver,如 strace 输出所示。
- Rustup 代理是指向 rustup 的硬链接,根据可执行文件名分发到正确的工具链二进制文件。
- 构建自定义 rustc_driver 需要添加 `rustc-dev` 组件,并通过 `LD_LIBRARY_PATH` 或 `-rpath` 处理共享库加载。
- 自定义驱动程序可以重写编译器查询,例如通过将 `check_unsafety` 设置为空操作来禁用不安全检查器。
- 为了使驱动程序尊重工具链版本,可以使用 `readlink` 技巧的 shell 脚本分发到正确的二进制文件。