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