• libusb 源码移植到工程项目中,使用CMake编译


    1. 前言

    在近期项目中,需要使用到libusb,在以前项目中,都是直接在ubuntu系统中,将其编译成动态库的形式,然后在项目工程中动态加载,如果是项目平台一致,不经常修改还好。但是,如果遇到平台多样的,就很麻烦,近期就遇到这个事,开发平台为Ubuntu, 到客户运行平台为centos 。因此,如果都是采用动态加载 .so 方式,就很麻烦。不同平台都需要安装libusb, 并且,系统平台一样,不同的gcc 或者 g++ 编译器版本不一样,可能也需要重新安装。

    因此,根据上面所描述,为了解决多运行平台问题,需要将libusb源码,加入工程项目中,每次都参与编译,这样子就可以解决问题。这篇文章,将记录如何将libusb源码加入项目工程中,并且使用cmake 进行编译。

    二、关于libusb

    1. 下面为libusb介绍

    三、下载libusb

    1. 到其官网链接下载源代码 https://libusb.info/

    2. 下载其源代码,鼠标移动到DOWNLOAD 菜单中,点击跳转到源代码下载页面,选择

    3. 上面源代码下载页面为gitbub, Releases · libusb/libusb · GitHub.

    选择需要的版本下载,

    4.   解压,找到 libusb-1.0.26.tar\libusb-1.0.26\libusb  这个目录下源代码,然后                                                  

     

    5. 拷贝对应代码到工程目录 ,根据gcc 编译libusb动态库,可以知道,那些源文件需要参与编译,

     6. 根据上面的安装libusbs时,需要参与链接的.lo 文件可以看到,因此,导入工程的文件如下:

     7. 新建CMakeList.txt 文件,指定参与编译的源文件

    8.  增加编译链接,

    #指定gcc 生成Relase 和 Debug 生成条件

    SET(CMAKE_C_FLAGS_DEBUG "-lrt -ldl -g -ggdb")

    SET(CMAKE_C_FLAGS_RELEASE "-lrt -ldl")

    #指定g++ 生成Relase 和 Debug 生成条件

    SET(CMAKE_CXX_FLAGS_DEBUG "-lrt -ldl -std=c++11 -g -ggdb")

    SET(CMAKE_CXX_FLAGS_RELEASE "-lrt -ldl -std=c++11")

    9.  由于观看libusb 源代码可以知道,其使用到多线程,因此,使用   g++ 或者 gcc 编译,需要链接上多线程库,

    在Cmake 添加如下:

    FIND_PACKAGE(Threads)

    10. 编译如下:

    target_link_libraries(testmain dl)

    结束。。。。。。。。。。。。。。。。

    /**
     *         ┏┓   ┏┓+ +
     *        ┏┛┻━━━┛┻┓ + +
     *        ┃       ┃
     *        ┃   ━   ┃ ++ + + +
     *        ████━████ ┃+
     *        ┃       ┃ +
     *        ┃   ┻   ┃
     *        ┃       ┃ + +
     *        ┗━┓   ┏━┛
     *          ┃   ┃
     *          ┃   ┃ + + + +
     *          ┃   ┃    Code is far away from bug with the animal protecting
     *          ┃   ┃ +    神兽保佑,代码无bug
     *          ┃   ┃
     *          ┃   ┃  +
     *          ┃    ┗━━━┓ + +
     *          ┃        ┣┓
     *          ┃        ┏┛
     *          ┗┓┓┏━┳┓┏┛ + + + +
     *           ┃┫┫ ┃┫┫
     *           ┗┻┛ ┗┻┛+ + + +
     *
     * @author chenxi
     * @date 2022年9月4日15:59:11
     */
     

  • 相关阅读:
    Java—代理
    大顶堆,小顶堆结构添加,移除元素过程以及源码分析(Java)结合LeetCode347(前k个高频元素), 215(第k大的数), 295(数据流的中位数)
    GaussDB T分布式集群安装部署
    盘点52个Python各行各业管理系统源码Python爱好者不容错过
    WebSocket基本使用方法
    C#根据DataTable中的不同值为asp:DataGrid中的不同行或单元格设置不同的颜色
    windows、Mac如何安装vue开发环境?
    「程序员必须掌握的算法」字典树「上篇」
    window安装rust
    深入了解Eureka:微服务架构中的服务发现与注册中心
  • 原文地址:https://blog.csdn.net/gd6321374/article/details/126688565