mips板子上跑usb_modeswitch遇到问题记录

本文记录了在MIPS板上移植和运行usb_modeswitch遇到的问题及解决方案,包括交叉编译libusb和usb_modeswitch,解决依赖路径、endianness问题以及添加-lpthread选项以使程序正常运行。最终通过修改配置文件实现了设备模式的切换。
摘要由CSDN通过智能技术生成

4, 5年前在做手机产品的时候, 也移植过usb_modeswitch到ARM的板子上, 当时的版本已经不记得了.

这两天在弄mips板子上的移植工作, 到官网看了下, 版本已经到了2.2.0, 依赖的usblib也是新的1.0版本了, 不再兼容原来的0.1版本.

此外还有个usb-modeswitch-data package (2014-05-29)的数据库的东东.


首先, 交叉编译libusb.

1. 解压后进目录mkdir install, 然后./configure CC=/usr/local/codesourcery/mips-4.3/bin/mips-linux-gnu-gcc --host=mips-linux --prefix=`pwd`/install
2. make; make install 就会在新建的那个install目录下生成libusb-1.0.so


然后编译usb_modeswitch.

1. 修改makefile的CC为上面同样的配置

2. make  这边就报错了, 提示找不到libusb.h的头文件, 如下:
/usr/local/codesourcery/mips-4.3/bin/mips-linux-gnu-gcc -o usb_modeswitch usb_modeswitch.c -Wall  `pkg-config --libs --cflags libusb-1.0`
Package libusb-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libusb-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libusb-1.0' found
In file included from usb_modeswitch.c:59:
usb_modeswitch.h:26:20: error: libusb.h: No such file or directory


看了下makefile, google了一下, pkg-config能自动帮你找到安装的库的位置, 避免每个人安装的位置不同引起的编译错误.
`pkg-config --libs --cflags libusb-1.0`的返回结果是"-I/home/xioliu/concerto/libusb-1.0.9/install/include/libusb-1.0  -L/home/xioliu/concerto/libusb-1.0.9/install/lib -lusb-1.0".
在前面的步骤中, libusb在make install的时候, 已经在目录中生成了libusb.h

结合上面的提示, 在makefile中加一个 "export  PKG_CONFIG_PATH=/home/xioliu/concerto/libusb-1.0.9/install/lib/pkgconfig" 后重新make就ok了.

在目录下生成了usb_modeswitch的可执行档, 大约79K(没有strip过的).


好了, 将libusb的库和可执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值