链接接编译过程转载如下 http://blog.csdn.net/mcy_cool/article/details/10178841
下面的过程仅供参考,会有一些问题,具体看后续的说明。
1、下载源码:
#wget http://dist.momonga-linux.org/pub/momonga/2/SOURCES/libusb-0.1.10.tar.gz
#wget http://down1.chinaunix.net/distfiles/usbutils-0.80.tar.gz
其中libusb分为1.0版和0.1版两种版本,1.0并不向下兼容0.1,需要libusb-compat的支持;因此,你可以同时装上1.0和0.1,但不可同时装0.1版和libusb-compat。详见:http://www.libusb.org/
usbutils 是Linux下查看usb设备信息的工具
2、解压:
1)tar -xvf usbutils-0.80.tar.gz
2)tar -xvf libusb-0.1.10.tar.gz
3、设环境变量(可省略):
export PATH=/usr/local/arm /4.5.1/arm-linux/bin/:$PATH
4、编译:
#cd libusb-0.1.10
#./configure CC=arm-linux-gcc--prefix="$PWD/../_install" --host=arm-linux
#make install
#cd ..
#cd usbutils-0.80
#./configure CC=arm-linux-gcc --host=arm-linux
LIBUSB_CFLAGS="$PWD/../_install/include/"LIBUSB_LIBS="$PWD/../_install/lib/libusb.so"
CPPFLAGS=-I"$PWD/../_install/include/"
CFLAGS="-O2"
#make
5、修改错误
如在编译libusb时出现错误usbpp.cpp:error:'printf' was not declared in this scope,就在usbpp.cpp文件开头部分中添加头文件#include <stdio.h>
6、复制到开发板
经过上面编译成功后,命令lsusb就出来了,就是位于usbutils-0.80目录下的lsusb可执行文件,将其复制到开发板文件系统中的bin目录中。
下面说说自己编译过程中遇到的问题
首先上面提供的libusb-0.1.10.tar.gz版本有点老了 编译的过程中会遇到没有usb.h 和 printf的问题,虽然可以修正,但是继续往下编译的时候 仍旧会有问题,于是后来 就改用更高的版本libusb-0.1.12.tar.gz,就没有这些问题了连接如下
https://sourceforge.net/projects/libusb/files/libusb-0.1%20%28LEGACY%29/0.1.12/
然后编译的时候 我的CC是 arm-poky-linux-gnueabi-gcc
#./configure CC=arm-poky-linux-gnueabi-gcc --prefix="$PWD/../_install" --host=arm-linux
这一步会有提示错误 C compiler cannot create executables
如果不加上CC 也就是
#./configure--prefix="$PWD/../_install" --host=arm-linux 就不会有错误提示 但是编译出来的 是gcc的库和命令 移植到arm板子上还是不行 有错误提示。
进一步分析了config.log和 configure 发现执行./configure的时候 会创建一个conftest.c 的文件, 然后会将按照输入的CC宏进行编译,如果编译失败就会有这个错误提示,然后自己试着手动arm-poky-linux-gnueabi-gcc conftest.c -o conftest 发现 手动编译确实也失败了 看来还是CC的问题,
重新配置CC如下:
declare -x CC="arm-poky-linux-gnueabi-gcc -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/opt/poky/1.8/sysroots/cortexa7hf-vfp-neon-poky-linux-gnueabi"
然后手动编译 conftest.c
$CC test.c -o test 是可以的
然后在重新配置libusb-0.1.12 步骤如下
declare -x CC="arm-poky-linux-gnueabi-gcc -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/opt/poky/1.8/sysroots/cortexa7hf-vfp-neon-poky-linux-gnueabi"
./configure --prefix="/home/chit/fsl-release-bsp/tool/lsusbcmd/_install" --host=arm-linux
make
make install
一切ok
下面接着编译usbutils-0.80 我将下面的路径改为全路径了,这个可以自己看着改成自己需要的。
./configure --host=arm-linux LIBUSB_CFLAGS="/home/chit/fsl-release-bsp/tool/lsusbcmd/_install/include/" LIBUSB_LIBS="/home/chit/fsl-release-bsp/tool/lsusbcmd/_install/lib/libusb.so" CPPFLAGS=-I"/home/chit/fsl-release-bsp/tool/lsusbcmd/_install/include/" CFLAGS="-O2"
make
一切ok 最后在usbutils-0.80目录下就生成了lsusb,然后拷贝lsusb和 需要的库,在目录_install/lib/libusb-0.1.so.4
在开发板上输入lsusb显示
root@imx6ulevk:~# lsusblsusb: cannot open "/usr/local/share/usb.ids", No such file or directory
Bus 001 Device 002: ID 0781:5581
Bus 001 Device 001: ID 1d6b:0002
在主机上 找usb.ids文件
root@ubuntu:/usr/share# find / -name usb.ids -print
/var/lib/usbutils/usb.ids
/home/chit/fsl-release-bsp/tool/lsusbcmd/usbutils-0.80/usb.ids
/home/chit/fsl-release-bsp/build-x11/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/usbutils/007-r0/usbutils-007/usb.ids
将/home/chit/fsl-release-bsp/build-x11/tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/usbutils/007-r0/usbutils-007/usb.ids拷贝到开发板上
在lsusb
root@imx6ulevk:/usr# lsusb
Bus 001 Device 002: ID 0781:5581 SanDisk Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
到此一切ok 其中usb.ids可以到http://www.linux-usb.org/usb.ids 上面去下,这个是比较新的。