ubuntu16.04 编译 libusb以及 使用libusb库编译hidapi库

首先,需要编译 libusb的库,然后依赖于 libusb的库,编译 hidapi的库

一.LIBUSB编译

1.下载 libusb的源码:

git clone https://github.com/libusb/libusb.git

2.编译:

进入到跟目录下的android/jni目录下面,执行 ndk-build  APP_ABI=armeabi-v7a,此处根据需要选取,armeabi需要比较老的ndk版本,然后会在jni的上层目录,即 android/libs/armeabi-v71/libusb1.0.so,生成了 libusb1.0.so,然后libusb编译完成,不同的架构的cpu,通过 APP_ABI制定即可

二.HIDAPI编译

1.下载 hidapi源码:

$ git clone https://github.com/signal11/hidapi.git

2.修改Android.mk:

如果不修改根目录下的 android/jni/Android.mk,编译会报错,提示找不到 libusb的库,需要修改一下 Android.mk文件,修改如下:

LOCAL_PATH:= $(call my-dir)

APP_ABI = armeabi

HIDAPI_ROOT_REL:= ../..
HIDAPI_ROOT_ABS:= $(LOCAL_PATH)/../..
LIBUSB_ROOT_ABS:= $(LOCAL_PATH)/../../../libusb-1.0.23


include $(CLEAR_VARS)
LOCAL_MODULE    := libusb1.0
LOCAL_SRC_FILES := libusb1.0.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := \
  $(HIDAPI_ROOT_REL)/libusb/hid.c

LOCAL_C_INCLUDES += \
  $(HIDAPI_ROOT_ABS)/hidapi \
  $(HIDAPI_ROOT_ABS)/android \
  $(LIBUSB_ROOT_ABS)/libusb-1.0.23


LOCAL_SHARED_LIBRARIES := libusb1.0

#LOCAL_LDLIBS := libusb1.0

#LOCAL_MODULE_FILENAME  :=libhidapi
LOCAL_MODULE := libhidapi

include $(BUILD_SHARED_LIBRARY)

即添加如下代码:

include $(CLEAR_VARS)
LOCAL_MODULE    := libusb1.0
LOCAL_SRC_FILES := libusb1.0.so
include $(PREBUILT_SHARED_LIBRARY)

3.将第一步中编译的libusb1.0.so库,拷贝到 android/jni/ 目录下,要拷贝对应的 ABI版本的so库,如拷贝 armeabi 的,则编译libhidapi的时候,需要指定 APP_ABI=armeabi,编译命令如下:

/* 根目录下的 android/jni/目录下执行 */
ndk-build APP_ABI = armeabi        /* 需要拷贝armeabi架构的libusb1.0.so到android/jni/目录 */
ndk-build APP_ABI = armeabi-v7a    /* 需要拷贝armeabi-v7a 架构的 libusb1.0.so */

编译完成后,即可在  android/libs/目录下看到对应的 libhidapi.so

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技之光666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值