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

相关推荐
该用户已不存在1 天前
Mojo vs Python vs Rust: 2025年搞AI,该学哪个?
后端·python·rust
大卫小东(Sheldon)1 天前
写了一个BBP算法的实现库,欢迎讨论
数学·rust
echoarts1 天前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
ftpeak2 天前
从零开始使用 axum-server 构建 HTTP/HTTPS 服务
网络·http·https·rust·web·web app
咸甜适中2 天前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
咸甜适中2 天前
rust语言 (1.88) egui (0.32.2) 学习笔记(逐行注释)(二十八)使用图片控件显示图片
笔记·学习·rust·egui
huli33202 天前
pingora_web:首款基于 Cloudflare Pingora 的企业级 Rust Web 框架
rust
Pomelo_刘金2 天前
如何优雅地抽离 Rust 子工程:以 rumqttd 为例
rust
几颗流星2 天前
Rust 常用语法速记 - 错误处理
后端·rust
向上的车轮2 天前
如何用 Rust 重写 SQLite 数据库(二):是否有市场空间?
数据库·rust·sqlite