Linux下编译安装libusb动态库(.so) - libus1-0 vs libusb-0.1

最近在调试代码的过程中,发现libusb库中的一些方法没办法debug到,所以试着下载了一版源码,编译安装到指定的目录。这样,在工程的pro文件中,直接指定库和头文件的目录就可以引用自己编译的libusb库了。
在网上查了相关的方法并结合实际环境,总结了安装的步骤以及遇到的问题和解决方案。

当前环境

SLED 15-SP2 (5.3.18-24.86-default)

代码路径

https://github.com/libusb/libusb
  下载的版本是v1.0.21(从yast上查到的)

依赖库

automake & autoconf

cpp ./bootstrap.sh: line 6: autoreconf: command not found

libtool

libusb/Makefile.am:5: error: Libtool library used but ‘LIBTOOL’ is undefined
libusb/Makefile.am:5: The usual way to define ‘LIBTOOL’ is to add ‘LT_INIT’
libusb/Makefile.am:5: to ‘configure.ac’ and run ‘aclocal’ and ‘autoconf’ again.
libusb/Makefile.am:5: If ‘LT_INIT’ is in ‘configure.ac’, make sure
libusb/Makefile.am:5: its definition is in aclocal’s search path.
autoreconf: automake failed with exit status: 1

libudev

checking for libudev.h… no
configure: error: “udev support requested but libudev not installed”

编译步骤

  • 生成 configure文件
    高版本中没有configure文件,手动需要生成,低版本直接执行configure文件加上需要的参数即可。当前版本需要手动生成configure文件, Readme.git。
    执行 ./bootstrap.sh
> `由于项目中没有configure文件,根据Readme.git文件, 需要执行/autogen.sh or> ./bootstrap.sh来生成configure文件。
> 其中,二者的区别是,前者生成configure之后自动执行configure,后者仅生成
> configure不执行,所以,如果需要执行makefile的参数,则最好使用bootstrap.sh。
> 在执行bootstrap.sh的过程中可能会报错,提示缺少依赖库,逐一安装就行`。

生成Makefile
执行 ./configure --prefix=/home/ms1/workspace/usbInstallPath --enable-system-log

--prefix指定安装目录

编译
make
安装
make install

会自动在指定的安装路径,生成include和lib64文件夹,里面分别放着 libusb.h和生成的库文件。

设置log输出
在客户程序中调用 libusb_set_debug(nullptr, LIBUSB_LOG_LEVEL_DEBUG); 把log level 级别设置成debug level,但是打开以后会有大量的log输出,如果是调试固定几个函数,可以设置成warning level LIBUSB_LOG_LEVEL_WARNING
打印log:
usbi_warn() // LIBUSB_LOG_LEVEL_WARNING
usbi_dbg() //LIBUSB_LOG_LEVEL_DEBUG

tips:

注意这里编译的是libusb-1(里面实现了lib_usb_xxx方法), 系统还有一个libusb-0,二者是两个不同的库。
在这里插入图片描述
系统默认安装了 libusb-0_1-4(所以/usr/lib64下有libusb-0.1.so.4), 和libusb-1_0-0(所以/usr/lib64下有libusb-1.0.so, 给的包是release包不是dev包,所以要再安装一个dev包以获得头文件,否则build代码的时候报缺少libusb.h头文件, 所以,想替换libusb-1其实只需要编译对应版本的源码, 替换libusb-1.0.so,保留libusb-0_1-4变。
两种版本下载地址及生成的库文件:
1)libusb-1.0.21: https://github.com/libusb/libusb-compat-0.1/tree/0.1.4 编译之后没有Libusb-0.1.so.4
在这里插入图片描述

2)Libusb-0.1.so.4:https://github.com/libusb/libusb-compat-0.1/tree/0.1.4 ,编译之后包含libusb-0.1.so.4
在这里插入图片描述
Pro文件里:
-lusb默认指的是libusb.so
-lusb-1.0默认指的是libusb-1.0.so

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值