Windows 11 搭建 Rust USB 开发环境之 GNU 版

我之前写过一篇文章《基于 Tauri + React + Rust + libusb + ESC/POS 驱动打印机蜂鸣器》,有网友评论说:

现在又卡在了link上,无法打开输入文件usb-1.0.lib

然后我在自己的电脑也复现了,但之前安装环境是稀里糊涂地装了一遍,有些地方是不清楚原理的。

趁着今天休息的时间,在家里的电脑重新装了一遍。我只记录了一些我疑惑的点。

具体如何安装的软件见文章底部的参考部分列出的链接。

需要的软件

Rust 工具集。

  • rustup 是 Rust 工具链的安装程序和更新程序。
  • Cargo 是 Rust 包管理工具的名称。
  • rustc 是 Rust 编译器。大多数情况下,你不会直接调用 rustc,而是通过 Cargo 间接调用它。

MSYS2

Mingw(Minimalist GNU for Windows)是一个开发工具集,提供了用于 Windows 环境下编译和运行 C、C++ 等程序的工具链。

Mingw-w64 是 Mingw 的一个分支,专注于支持 64 位 Windows 系统。它提供了对 64 位 Windows 环境下各种 API 的支持。

Msys(Minimal System)是一个轻量级的类 Unix 环境,它提供了一些基本的 Unix 工具和 shell 环境,用于在 Windows 系统上运行 Unix 程序。

Msys2 是 Msys 的一个升级版,它提供了更丰富的软件包管理系统和更新的工具链,使得在 Windows 系统上使用Unix 程序变得更加方便。

Cygwin 是另一个类 Unix 环境,它提供了一套完整的 GNU 工具链和一些 Unix 系统调用的实现,使得在 Windows 系统上可以运行大部分的 Unix 程序。

这些工具之间的关系是:

Mingw 和 Mingw-w64 提供了用于编译和运行 C、C++ 等程序的工具链;

Msys 和 Msys2 提供了在 Windows 系统上运行 Unix 程序所需的环境和工具;

Cygwin 则提供了一套完整的 GNU 工具链和 Unix 系统调用的实现,使得在 Windows 系统上可以运行大部分的Unix 程序。

Msys 和 Msys2 都是基于 Cygwin 开发的,但它们的目标不同,Msys 和 Msys2 更加轻量级且专注于提供基本的Unix 环境和工具,而 Cygwin 则更加完整和强大。

pkg-config

pkg-config 是一个用于管理编译和链接时的依赖库的工具。它可以帮助开发人员在编译和链接时自动查找和配置所需的库文件和头文件。

libusb

用于访问 USB 设备的跨平台库。

最后来一张图:

安装好以上的软件后。

检查一下软件信息

rust 相关

vbnet 复制代码
$ rustup --version
rustup 1.26.0 (5af9b9484 2023-04-05)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.74.1 (a28077b28 2023-12-04)

$ cargo --version
cargo 1.74.1 (ecb9851af 2023-10-18)

$ rustup toolchain list
stable-x86_64-pc-windows-gnu (default)
stable-x86_64-pc-windows-msvc

可以看出 rust 我是基于 GNU 工具链 来编译的。安装 gnu 工具链,可以通过命令 rustup toolchain install stable-gnu;

如果要安装 msvc 工具链,则 rustup toolchain install stable-msvc

设置默认工具链 rustup default stable-gnu

MSYS2

Mingw-w64 所在目录:C:\msys64\mingw64

ruby 复制代码
$ pkg-config --cflags --libs libusb-1.0
-IC:/msys64/mingw64/include/libusb-1.0 -LC:/msys64/mingw64/lib/libusb-1.0/static -lusb-1.0

请确保你电脑安装好这些软件,如果没有,请参考参考列出的链接。

配置 libusb

这里主要参考 Rust USB 开发|前尘逐梦

  1. 下载 libusb 编译好的包。我下载的是 libusb-1.0.20.7z
  2. 解压后,进入 libusb-1.0.20 目录。
  3. 复制 include 下的 libusb-1.0 文件夹到 C:\msys64\mingw64\include 下。
  4. C:\msys64\mingw64\include 下新建 libusb-1.0
  5. 复制 MinGW64 下的 dllstatic 文件夹到 C:\msys64\mingw64\include\libusb-1.0
  6. C:\msys64\mingw64\lib\pkgconfig 下新建 libusb-1.0.pc
  7. libusb-1.0.pc 内容,静态链接 libusb
ini 复制代码
prefix=c:\msys64\mingw64
exec_prefix=${prefix}
includedir=${prefix}/include/libusb-1.0
libdir=${prefix}/lib/libusb-1.0/static

Name: libusb
Description: libusb
Version: 1.0
Cflags: -I${includedir}
Libs: -L${libdir} -lusb-1.0

参考

Windows 上安装 Rust 及配置

在 Windows 上通过 Rust 进行开发

Rust USB 开发|前尘逐梦

windows下快速安装gcc、pkg-config的方法

相关推荐
Ramble_Naylor8 小时前
错误是一种值:Result、? 与 panic!
rust
柯南46689 小时前
【AI开发之Rust】第 10 课:Cargo 工程化 —— 模块、依赖与测试(基础篇收尾)
rust·编程语言
qq_452396239 小时前
第九篇:《并发编程:线程、Channel 与共享状态》
rust
Source.Liu10 小时前
【A11】 labelprinter(Tauri 版)新建步骤
windows·rust
孙启超11 小时前
【AI开发之Rust】第 8 课:泛型、trait 与 trait 对象
开发语言·后端·rust
蓝宝石的傻话11 小时前
MiBee Eye Notebook:把闲置笔记本变成一台带麦克风的网络摄像头
数码相机·rust
小灰灰搞电子12 小时前
Rust Once 、OnceLock、LazyLock 一次性初始化详解
开发语言·后端·rust
qq_4523962312 小时前
第八篇:《智能指针与内部可变性:Rust 的进阶内存管理》
rust
Amos_Web14 小时前
Rspack 源码解析(七):Module、Chunk 与加载树优化
前端·rust·源码阅读