libusb.dylib 初体验

本文介绍了在macpro Darwin kernel环境下,为避免直接接触kernel开发USB驱动,选择使用libusb.dylib库进行开发的经验。libusb.dylib是一个方便的USB驱动开发库,适合macOS用户,并且对硬件知识要求不高,但理解USB工作原理是必要的。

macpro Darwin kernel,对这个linux内核并不了解,但是自己的实验项目中又要开发usb Driver,窥视了一下Darwin后,还是决定先不触碰kernel(反正早晚要碰头尴尬)绕过kernel,使用个封装库来达到目的吧 大笑

libusb.dylib 是一个用来开发usb驱动(或者其他功能的比较方便的库),macOS的用户可以用port来安装,或者去sourcerage(估计这个拼错了)下载。libusb on source

源码估计看一遍就知道怎么使用了,使用起来还是非常方便简单的,即使不懂硬件也可以轻松使用(有点做广告的嫌疑),但是USB的工作原理还是要明白的。USB的教程网上有很多,这里就不多说了,咱们直接看libusb吧

libusb_device_handle* discover(int vendor , int product)
{
	ofstream errorLog;
	libusb_device** li;

	libusb_init(NULL);

	int cnt = libusb_get_device_list(NULL , &li);
	for(int i = 0;i<cnt;++i)
	{
### 解决编译时因缺少 libusb.h 文件导致的错误 在编译包含 `libusb.h` 的程序时,如果出现 `fatal error: libusb.h: No such file or directory` 错误,通常是因为系统中未正确安装 `libusb-1.0` 开发库或其头文件。以下是解决此问题的具体方法: #### 安装 libusb-1.0 开发库 确保系统中已安装 `libusb-1.0` 的开发包。对于基于 Debian 或 Ubuntu 的系统,可以使用以下命令进行安装: ```bash sudo apt-get update sudo apt-get install libusb-1.0-0-dev ``` 上述命令会安装 `libusb-1.0` 库及其开发头文件,从而解决缺少 `libusb.h` 的问题[^1]。 #### 验证头文件路径 安装完成后,可以通过以下命令验证 `libusb.h` 是否存在: ```bash ls /usr/include/libusb-1.0/libusb.h ``` 如果输出显示文件路径,则说明安装成功,编译器能够找到该头文件[^1]。 #### 修改代码中的头文件包含方式 在编写代码时,应确保正确包含 `libusb.h` 文件。例如: ```c #include <libusb-1.0/libusb.h> ``` 这种包含方式确保了编译器能够在 `/usr/include/libusb-1.0/` 路径下找到 `libusb.h` 文件[^1]。 #### 编译时链接库 在编译包含 `libusb.h` 的程序时,需要链接 `libusb-1.0` 库。例如,使用以下命令编译程序: ```bash gcc -o libusb_test libusb_test.c -lusb-1.0 ``` 其中 `-lusb-1.0` 参数指定了链接 `libusb-1.0` 库[^1]。 #### 检查环境变量 如果仍然无法找到 `libusb.h`,可能需要检查环境变量是否正确配置。确保 `C_INCLUDE_PATH` 和 `LIBRARY_PATH` 包含正确的路径。例如: ```bash export C_INCLUDE_PATH=/usr/include/libusb-1.0:$C_INCLUDE_PATH export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH ``` --- ### 示例代码 以下是一个简单的示例程序,演示如何使用 `libusb.h`: ```c #include <stdio.h> #include <libusb-1.0/libusb.h> int main() { libusb_context *ctx = NULL; int ret = libusb_init(&ctx); if (ret < 0) { printf("Failed to initialize libusb\n"); return 1; } printf("libusb initialized successfully\n"); libusb_exit(ctx); return 0; } ``` 编译上述代码时,使用以下命令: ```bash gcc -o libusb_example libusb_example.c -lusb-1.0 ``` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值