Hasty Briefsbeta

双语

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 脚本分发到正确的二进制文件。