当前位置: 首页 > java >正文

OrangePi Zero 3学习笔记(Android篇)5 - usbutils编译(更新lsusb)

目录

1. Ubuntu中编译

2. AOSP编译

3. 去掉原来的配置

3. 打包

4. 验证lsusb


在Ubuntu中,lsusb的源代码源自usbutils。而OrangePi Zero 3中lsusb的位置可以看文件H618-Android12-Src/external/toybox/Android.bp,

"toys/other/lsusb.c",

1. Ubuntu中编译

  • 安装libudev
sudo apt install libudev-dev
  • 执行autogen
./autogen.sh
  • 执行configure
./configure
  • 执行make和make clean
make
make clean

2. AOSP编译

将usbutils整个文件夹拷贝到H618-Android12-Src/external/内,新建一个android.bp

cc_binary {name: "lsusb",//proprietary: true,//product_specific: true,srcs: ["lsusb.c","lsusb-t.c","desc-defs.c","desc-dump.c","names.c","sysfs.c","usbmisc.c",],include_dirs: [ "external/libusb/include/libusb",],local_include_dirs: ["usbhid-dump",],shared_libs: ["libudev","libusb",],
}

拷贝eudev里面的libudev.h和udev.h到当前文件夹,然后再这个文件夹内新建一个lib文件夹,把上一步生成的libudev.so拷贝到这个文件夹内。

编译这个模块

mmm external/usbutils-017/

错误信息:

  • error: unused parameter 'indent' [-Werror,-Wunused-parameter]

这是因为这些函数的参数没有使用到,分别找到这几个函数,把这个参数利用起来,例如:

static void desc_snowflake_dump_uac2_clk_src_bmattr(unsigned long long value,unsigned int indent)
{printf(" %s clock %s, indent %d\n",uac2_clk_src_bmattr[value & 0x3],(value & 0x4) ? uac3_clk_src_bmattr[3] : "", indent);
}
  • external/usbutils-017/usb-spec.h:91:9: error: missing field 'termt' initializer[-Werror,-Wmissing-field-initializers]

找到对应位置,将{ NULL },改为{ NULL, 0, "" },

这个文件里面其他位置也是这样改。

3. 去掉原来的配置

把external/toybox/Android.bp里面的文件关于lsusb部分去掉,以“lsusb”为关键字搜一下

"toys/other/lsusb.c",//"lsusb",

注意,这里lsusb.c还是要编译,不然会提示错误,找不到lsusb_main

3. 打包

在device/softwinner/apollo/apollo_p2.mk文件中添加

PRODUCT_PACKAGES += lsusb

4. 验证lsusb

console:/ $ lsusb
unable to initialize usb specBus 001 Device 001: ID 1d6b:0002 Linux 5.4.125 ehci_hcd EHCI Host Controller
Bus 002 Device 001: ID 1d6b:0002 Linux 5.4.125 ehci_hcd EHCI Host Controller
Bus 003 Device 001: ID 1d6b:0002 Linux 5.4.125 ehci_hcd EHCI Host Controller
Bus 003 Device 002: ID 0403:6011 FTDI FT4232H MiniModule
Bus 004 Device 001: ID 1d6b:0001 Linux 5.4.125 ohci_hcd OHCI Host Controller
Bus 005 Device 001: ID 1d6b:0001 Linux 5.4.125 ohci_hcd OHCI Host Controller
Bus 006 Device 001: ID 1d6b:0001 Linux 5.4.125 ohci_hcd OHCI Host Controller

http://www.xdnf.cn/news/5318.html

相关文章:

  • KEIL_C51和KEIL_MDK共存
  • 批量导出docker镜像
  • JAVA练习题(2) 找素数
  • Openai开源的对文本进行Token编码、解码的库:Tiktoken 库
  • 【Linux系统编程】进程属性--标识符
  • MySql 年,月,日 查询 某时间段的 日期列表
  • Yocto中`${S}`和`${WORKDIR}`的联系与区别
  • C++(5):有符号整数和无符号整数差异
  • RAG 赋能客服机器人:多轮对话与精准回复
  • C++STL——stack,queue
  • 牛客周赛round91
  • 饮水计划(ST表+二分+差分)
  • 逆波兰表达式求值(中等)
  • Linux的web服务器的部署和优化
  • 选对第三方软件测试公司,项目验收成功率提升90%
  • 构件是一个逻辑概念,还是一个物理概念?
  • cdn 是什么?
  • rust-candle学习笔记12-实现因果注意力
  • 有效的括号(简单)
  • ESP32配置GPIO,实现每0.5秒翻转LED电平
  • python笔记和练习----少儿编程课程【阶段二(二)】
  • C++--类的构造函数与初始化列表差异
  • 抖音视频上传功能测试全维度拆解——从基础功能到隐藏缺陷的深度挖掘
  • 【八股消消乐】项目中如何优化JVM内存分配?
  • [题解]2023CCPC黑龙江省赛 - Ethernet
  • Java多线程同步方法ReentrantLock显式锁实现方式
  • Python数据分析
  • Spring 6.x 详解介绍
  • 【从零实现JsonRpc框架#1】Json库介绍
  • 基于NI-PXI的HIL系统开发