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的库和可执行