改改rust标准库,搞个自定义rust 2025-05-22 19:58:22 ## 背景 最近搞的一个windows项目基于rust开发,要跟第三方的存储设备对接,这个设备比较特殊,没有实现标准API的接口,导致很多很多第三方库在读取盘符的时候直接异常了,和对应的厂商了解了下,他们还改不了,简直无语😒。 具体细节就不说了,要搞定这个问题,就需要对rust的标准库代码做修改,支持这个特殊设备。 ## rust源码编译安装 这里修改rust源码就略过了,记录下关键的编译安装要点。 参考官方的源码安装文档:<https://github.com/rust-lang/rust/blob/master/INSTALL.md#mingw> windows系统,建议基于MinGW的构建方式,确实方便,安装完MSYS2后,修改`C:\msys64\ucrt64.ini`去除`MSYS2_PATH_TYPE=inherit`的注释,然后通过`ucrt64.exe`启动终端,在这里面执行构建的命令。 按文档的说明编译阶段正常,但最后的合并安装会出错,提示缺少ninja导致的,可以修改源码目录下的`bootstrap.toml`,添加如下配置: ``` [llvm] ninja = false download-ci-llvm = true ``` 在执行`python x.py install`就可以了。过程中会从GitHub上下载一些额外的源码或工具,这就需要自行搞定网络问题了。 整个过程会比较耗时,我这大概花了将近2h(果然研发工作最耗时的往往不在写代码上😭),最终安装后的rust sdk路径是源码所在的盘符的/usr/local下,我们可以将这个local文件夹重命名为`rust-x86_64-pc-windows-my-1.87.0`最后的版本按实际情况进行修改,然后把这个目录放到C盘根目录下(当前其他目录也可以,我就是图方便)。 ## 切换toolchain到我们自定义的rust上 命令如下: ``` rustup toolchain link my-1.87.0 C:\rust-x86_64-pc-windows-my-1.87.0 rustup default my-1.87.0 ``` 切换后,可以通过`rustc -V`看下版本是否正确。 接下来就可以正常使用各种命令进行项目开发了,也可以在项目里验证下修改的rust标准库代码是否符合预期。 非特殊说明,均为原创,原创文章,未经允许谢绝转载。 原始链接:改改rust标准库,搞个自定义rust 赏 Next YOLO模型训练