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的方法

相关推荐
Source.Liu5 小时前
【typenum】 9 与常量泛型桥接(generic_const_mappings.rs)
rust
姜 萌@cnblogs17 小时前
【实战】深入浅出 Rust 并发:RwLock 与 Mutex 在 Tauri 项目中的实践
前端·ai·rust·tauri
欧先生^_^17 小时前
LLVM编译器
rust
明月看潮生17 小时前
青少年编程与数学 02-019 Rust 编程基础 11课题、类型系统
开发语言·青少年编程·rust·数据类型·编程与数学
yezipi耶不耶1 天前
用 Rust 带你了解 TCP 和 UDP
tcp/ip·rust·udp
勇敢牛牛_1 天前
使用Rust开发的智能助手系统,支持多模型、知识库和MCP
ai·rust·rag·mcp
Source.Liu2 天前
【typenum】 8 常量文件(consts.rs)
rust
Liigo2 天前
LIIGO ❤️ RUST 12 YEARS
rust·纪念日·编程语言·liigo·十周年
明月看潮生2 天前
青少年编程与数学 02-019 Rust 编程基础 16课题、包、单元包及模块
开发语言·青少年编程·rust·编程与数学
后青春期的诗go2 天前
基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(二)
开发语言·后端·rust·rocket框架