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