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

相关推荐
wadesir15 小时前
掌握 Rust 中的浮点数处理(Rust f64 浮点数与标准库详解)
开发语言·后端·rust
盒马盒马17 小时前
Rust:生命周期
开发语言·rust
Source.Liu17 小时前
【LibreCAD】 rs_vector.cpp 文件详解
rust·cad
江公望18 小时前
Tauri框架是什么,它能做什么?
rust·tauri·流媒体
星释18 小时前
Rust 练习册 108:深入探索过程宏的奥秘
开发语言·后端·rust
百锦再19 小时前
.NET到Java的终极迁移指南:最快转型路线图
android·java·开发语言·python·rust·go·.net
wadesir1 天前
深入理解Rust静态生命周期(从零开始掌握‘static的奥秘)
开发语言·后端·rust
脑极体2 天前
蓝河入海:Rust先行者vivo的开源之志
开发语言·后端·rust·开源
badmonster02 天前
实时代码库索引:用 CocoIndex 构建智能代码搜索的终极方案
python·rust
黛色正浓2 天前
【React】极客园案例实践-项目搭建和登录模块
前端·react.js·rust