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

相关推荐
盒马盒马2 小时前
Rust:变量、常量与数据类型
开发语言·rust
傻啦嘿哟2 小时前
Rust爬虫实战:用reqwest+select打造高效网页抓取工具
开发语言·爬虫·rust
咸甜适中16 小时前
rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十四)垂直滚动条
笔记·学习·rust·egui
张志鹏PHP全栈20 小时前
Rust第四天,Rust中常见编程概念
后端·rust
咸甜适中1 天前
rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十五)网格布局
笔记·学习·rust·egui
susnm2 天前
最后的最后
rust·全栈
bruce541103 天前
深入理解 Rust Axum:两种依赖注入模式的实践与对比(二)
rust
该用户已不存在4 天前
这几款Rust工具,开发体验直线上升
前端·后端·rust
m0_480502646 天前
Rust 入门 生命周期-next2 (十九)
开发语言·后端·rust
寻月隐君6 天前
Rust Web 开发实战:使用 SQLx 连接 PostgreSQL 数据库
后端·rust·github