• 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
     */
     

  • 相关阅读:
    丢失vcruntime140_1.dll怎么解决,vcruntime140_1.dll怎么安装?
    ios打包,证书获取
    linux部署校园网绕过53端口服务脚本
    华为机试真题 C++ 实现【连续字母长度】
    Spring的IOC和AOP,学不会Spring的,你看我的文章
    ES6 入门教程 11 对象的新增方法 11.1 Object.is() & 11.2 Object.assign()
    电脑技巧:CopyQ剪切板增强工具介绍(附下载)
    Qt day4
    css3实现图片瀑布流,根据屏幕大小列可变和不可变的的瀑布流
    论文阅读:SOLOv2: Dynamic, Faster and Stronger
  • 原文地址:https://blog.csdn.net/gd6321374/article/details/126688565