libusb系列-003-Linux下libusb源码编译

news2025/1/12 21:40:30
头图

libusb系列-003-Linux下libusb源码编译

文章目录

  • libusb系列-003-Linux下libusb源码编译
    • 摘要
    • 源码下载及解压
      • 下载源码
      • 解压下载的源码压缩包
      • 打开终端
    • 准备编译环境
      • 安装make dh-autoreconf
      • 安装 libudev-dev
    • 编译
      • 错误的教程
    • 增加执行bootstrap.sh指令
    • 再编译
    • make
    • 安装库
    • 确认下

关键字: DebianLinuxQtlibusb源码

内容背景:

最近项目终于切到Linux下开发了,所以最近的记录都是发生在Debian 10 以及Arm Debain 10 下,Qt版本5.12.3。这几天真是问题多多,收获满满,不过目前阶段仅仅停留在解决问题,至于原理性的东西,还得慢慢消化。最近好多问题都是直接群里问大神,感谢各位大神助我成长。

开始本来USB传世使用的是HIDUSB,后面计划开发一个专用的驱动,到最后,因为最终系统一直定不下来,最终成了使用libusb了。大部分人都是直接使用libusb 的库的,把源码直接放在项目中参与编译的应该很好,哎,我就是那个大冤种,那么请跟随我一起看我如何给自己完坑踩坑吧。

摘要

相对于上篇Windows下libusb的编译,那么Linux下对于我来说就比较困哪了,不过好在还是搞出来了。这里Linux 系统是Debian 10 。gcc版本8.3.0.

源码下载及解压

下载源码

第一步还是下载源码,编译编译,没有源码咋编译,还是和win下一样。下载1.0.26版本的libusb,如下图所示.1.0.9版本我没有下载,原理应该差不多的,这里不在多描述。

这里需要提一个小小的建议,源码压缩包在win 下最好下载zip 的,在linux下,最好还是下载tar.gz的,其中他们的尾行序列可能不一样,也就是LFh和CRLF区别。

image-20221021214938613

解压下载的源码压缩包

下载好以后,解压到当前用户根目录下,如下图所示,因为咱命令用的不是很熟练,所以还是能图形界面就图形界面,命令行实在玩不溜,哈哈哈。直接点击提取 选择我们的根目录就可以了。或者选择一个自己喜欢的目录。在提取完成后,会有一个显示文件夹的提示。

image-20221021215039434

这里选择主目录就可以,好找,即使用命令,也可以直接cd就可以了,可以直接省去路劲。点击提取就好了

image-20221022142401473

这里也是,可以直接点击显示文件,可以省去再到主目录找文件的步骤。如下图所示

image-20221022142450619

这里,也要主要哦,直接鼠标双击这个文件夹,进去在里面打开终端。

image-20221022142557183

打开终端

完了在解压目录下打开终端,这样就省去CD到源码目录的指令了,嘿嘿嘿。

image-20221021215243890

准备编译环境

安装make dh-autoreconf

这里其实make 是不用安装的,但是为了保险起见,还是安装一下为好。执行如下指令

sudo apt install -y make dh-autoreconf

image-20221021215908781

安装 libudev-dev

执行如下指令

sudo apt install -y libudev-dev

image-20221021215916278

编译

错误的教程

要说这就是坑呢,网上大部分都是./autogen.sh ./configure, make,问题是这个是不好使的呀。看看我遇到的问题。

image-20221021220709088

image-20221021220739872

所呢,我又安装了一个叫 pkg-config 的东西,如下

image-20221021220933549

但是呢,还是没有结局,一样的错误

image-20221021221541846

增加执行bootstrap.sh指令

最终还是谷歌到了,在加一条指令

sudo ./bootstrap.sh

如下

image-20221021222011451

再编译

完了在执行就./configure就好了,如下图所示

image-20221021222142323

make

image-20221021222221527

这里还整的没有权限了

image-20221021222241205

安装库

image-20221021222336746

又是整的没有权限了

image-20221021222406397

确认下

到目录下确认下

image-20221021222417516

至此,在Linux 我们也有了libusb的库了,后面就是使用了。


博客签名2021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言中的文件操作那些事儿~~

是时候该学着操作文件了什么是文件文件种类文件名为什么要使用文件文件的打开和关闭文件的顺序读写fgetc/fputcfgets/gputsfscanf/fprintffread/fwrite文件的随机读写fseekftellrewind文件读取结束的判断文件缓冲区男人过了二十岁就要学着沉稳,遇到问题不要慌&#…

【Java】异常

看似不起波澜的日复一日 会突然在某一天让人看到坚持的意义 目录 1.认识异常 1.1 异常的概念 1.2 常见的异常 2.异常的体系结构 3.异常的分类 3.1 编译时异常 3.2 运行时异常 4.异常的处理 4.1 事前防御型 4.2 事后认错型 5.事后认错型处理 5.1 异常的抛出…

第22章 软件安装 RPM/ YUM

上章节是用源代码来编译完成; 发商编译好之后直接把可执行文件发布给用户来安装也是一种方法,类似于windows下的安装; 客户端取得这个文件后,只要通过特定的指令来安装, 那么该软件文件就会依照内部的脚本来检测相依的…

C++数据结构之堆栈

主要参考资料:01.堆栈基础知识 | 算法通关手册 (itcharge.cn)01.堆栈基础知识 | 算法通关手册 (itcharge.cn) 本文主要采用C实现,而参考资料主要采用python实现,可以相互结合食用。 基础知识 定义 堆栈(Stack):简称为…

MySQL数据库学习(4)

DQL分组查询 语法: SELECT 字段列表 FROM 表名[ WHERE条件 ] GROUP BY 分组字段名 [HAVING分组后过滤条件]; 我们发现分组查询中有两个条件,这两个条件的区别是什么呢?执行时机不同: where是分组之前进行过滤,不满足where条件&a…

基于SSM的疫情管控系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

大数据Hadoop之——Apache Hudi 数据湖实战操作(Spark,Flink与Hudi整合)

文章目录一、概述二、Hudi CLI三、Spark 与 Hudi 整合使用1)Spark 测试2)Spark 与 Hudi 整合使用1、启动spark-shell2、导入park及Hudi相关包3、定义变量4、模拟生成Trip乘车数据5、将模拟数据List转换为DataFrame数据集6、将数据写入到hudi四、Flink 与…

前端ES6相关的面试题

前端ES6相关的面试题 文章目录前端ES6相关的面试题一. var let constvarletconst二 . 函数的扩展reset参数箭头函数三 . 数组的扩展四.Set和map数据结构Setmap五. Promise六. 模块化一. var let const var var存在声明提升 >先上车,后买票 var声明的变量会挂载到window下面…

Java实操避坑指南四、spring中的坑

文章目录1. 项目搭建过程1. pom 依赖2. 在没有配置数据库相关时不要引入依赖包,如spring-boot-starter-data-jpa2. spring bean 默认生成策略的正确使用1. 代码示例2. 单元测试3. 工具类 [参考](#test2)4. 报错信息5. 分析6. 使用说明2. 使用了Autowired 注解&#…

【5G RAN】5G gNB间的N2/NGAP切换(handover)那点事儿

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

@Import注解详解

Import这个注解非常重要,而且在springboot项目当中随处可见,就拿springboot启动类来说,我们经常会遇到一些Enable相关的注解,例如开启异步EnableAsync、开启缓存支持EnableCaching、开启定时任务EnableScheduling等等… 目录一、I…

Oracle通过DBLINK访问达梦数据库

环境需求 需要安装配置以下相关软件: 1、Oracle Gateways 2、ODBC数据源(gateway机器) 3、达梦数据库软件(gateway机器) 安装配置 Windows环境 安装达梦数据库软件 安装步骤省略,可以参考DM 数据库…

【嵌入式Linux开发一路清障-连载02】Ubuntu22.04安装Shutter进行截图和标注

Ubuntu22.04安装Shutter进行截图和标注障碍 05-Ubuntu22.04中不会给截图做标注,写Bolg举步维艰命令行方式安装Shuttershutter中的常用命令为截取活动窗口设置快捷键安装gnome-web-photo截取长图--失败--未完待续小结下节预告障碍 05-Ubuntu22…

一起来部署项目-采购一台云服务器

前言 不会运维的程序员不是一个好程序员,你是这样认为吗?不,不重要,关键是很多小企业是让后端程序员去干运维的,省钱~~~o(╥﹏╥)o。特别是在YQ严重的当下,所以为了提高自己的竞争力,从今天起&…

万字爽文一篇带你掌握Java8新特性

陈老老老板说明:新的专栏,本专栏专门讲Java8新特性,把平时遇到的问题与Java8的写法进行总结,需要注意的地方都标红了,一起加油。本文是介绍Java8新特性与常用方法(此篇只做大体介绍了解,之后会把…

Java8中LocalDate详解Date线程不安全的原因

LocalDate 分类分工 java.time.LocalDate ->只对年月日做出处理 java.time.LocalTime ->只对时分秒纳秒做出处理 java.time.LocalDateTime ->同时可以处理年月日和时分秒优点 除了使用起来更加简单和灵活,主要是传统的时期处理类Date、Calendar不是多线…

刷爆leetcode第十二期 0026 数组中数字出现的次数

编号0026 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 题目示例如下 这里其实是一道我一个月之前做的题目 在学弟的博客里刚好看…

【数据结构与算法】Java实现七大排序算法汇总

✨哈喽,进来的小伙伴们,你们好耶!✨ 🛰️🛰️系列专栏:【数据结构与算法】 ✈️✈️本篇内容: Java实现七大排序算法汇总! 🚀🚀由于本篇博客涉及代码较多,博主把代码都提…

刷爆leetcode第十一期 0023~0025

刷爆leetcode第十一期 编号0023 相同的树编号0024 对称二叉树编号0025 另一个树的子树编号0023 相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是…

多旋翼无人机仿真 rotors_simulator:用键盘控制无人机飞行

多旋翼无人机仿真 rotors_simulator:用键盘控制无人机飞行前言书接上文接口测试键盘指令发布指令转换与发布修改 rotors_simulator 的控制接口节点测试前言 RotorS 是一个MAV gazebo 仿真系统。 提供了几种多旋翼仿真模型,例如 AscTec HummingbirdAsc…