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

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.dtcms.com/a/183174.html

相关文章:

  • DVWA靶场Cryptography模块medium不看原码做法
  • kubectl top 查询pod连接数
  • Go基于plugin的热更新初体验
  • 【赵渝强老师】TiDB SQL层的工作机制
  • 数据分析2
  • 物联网、数字化工厂与智能智慧技术未来发展方向
  • 光的本质(以暗物质维度粒子为介质的能量传导)
  • Kubernetes应用发布方式完整流程指南
  • Java代理
  • ERP学习(二):用友软件产品之系统管理
  • 网络原理(Java)
  • 文生视频模型速读:LTX-Video
  • [ctfshow web入门] web67
  • SolidWork-2023 鼠標工程
  • 宝塔服务安装使用的保姆级教程
  • 客户端建立一个连接需要占用客户端的端口吗
  • C++学习-骑士巡游问题
  • 独立按键控制LED
  • C++(6):逻辑运算符
  • 基于C语言的TCP通信测试程序开发指南
  • [ctfshow web入门] web71
  • 对话 BitMart 新任 CEO Nenter (Nathan) Chow:技术创新、全球扩张和社区赋能
  • TIME - MoE 模型代码 3.3——Time-MoE-main/time_moe/datasets/time_moe_window_dataset.py
  • 【排错】dify1.3.1插件市场安装报错问题
  • 协议路由更改路径配置
  • 计算机设计大赛山东省赛区软件开发赛道线上答辩复盘
  • 记录一次window2012r2安装配置oracle11g的过程-出现的错误以及解决方法
  • GPT-4o, GPT 4.5, GPT 4.1, O3, O4-mini等模型的区别与联系
  • 嵌入式学习笔记 - 运算放大器的共模抑制比
  • Java 原生实现代码沙箱之Java 程序安全控制(OJ判题系统第2期)——设计思路、实现步骤、代码实现