libusb编译、测试、使用
要用到才开始学,啥都不懂,感觉好难受。最近要在ARM+Linux嵌入式端集成libusb,刚开始搞,慢慢写。首先是libusb的交叉编译和测试。交叉编译:下载libusb的源码,下载地址:https://sourceforge.net/projects/libusb/files/,下载好后解压(我是下载了两个版本,libusb-1.0.20.tar.bz2和libusb-1.0.9.tar.bz2
要用到才开始学,啥都不懂,感觉好难受。
最近要在ARM+Linux嵌入式端集成libusb,刚开始搞,慢慢写。
首先是libusb的交叉编译和测试。
交叉编译:
下载libusb的源码,下载地址:https://sourceforge.net/projects/libusb/files/,下载好后解压(我是下载了两个版本,libusb-1.0.20.tar.bz2和libusb-1.0.9.tar.bz2),因为是在ARM上要运行,所以使用交叉编译。先在PC(Ubuntu14.04)上cd进入解压后的目录,运行
./configure --host=arm-linux --prefix=~/arm-cross-tools/libusb --disable-udev
其中:–host=arm-linux表示该软件编译完成后在arm平台上运行,–prefix后面为软件安装目录,udev是啥还不知道。
然后make
最后make install
在这三步中,发现如果安装目录选择系统目录下(即/dev或者/opt等等),在make或者make install的时候会出现权限问题,所以我把目录选择为主目录~下。
测试:
进入安装目录~/arm-cross-tools/libusb后,会发现include和lib两个文件夹,其中include/libusb-1.0//libusb.h是以后要编译其他代码时的头文件,lib文件夹下的是一些动态链接库。
测试是使用libusb源码中的example中的listdevst.c程序(编译,然后运行可执行文件)去测试。
gcc -I(大写i,后面无空格)~/arm-cross-tools/libusb/include/libusb-1.0 listdevst.c -L(后面无空格)~/arm-cross-tools/libusb/lib -l(小写L,后面无空格)usb-1.0
由于没有指定生成的文件名称,所以最终生成可执行文件a.out。
将a.out文件在ARM上运行,我的做法是在板子上运行其他程序后,在串口终端通过adb push到板子的SD卡中,./a.out 运行这个文件,但是结果有问题,提示没有libusb-1.0.so.0这个库,然后再把这个库从PC机上导入板子的LInux系统中,理论上来说,直接导入/lib下就可以了,但是不知道为什么,板子的Linux系统是只读的,所以只能导入到SD卡里,再通过export LD_LIBRARY_PATH把这个库的路径添加进去,再运行a.out就可以成功运行了,可以看到系统检测出PID,VID。
ps:如果之前不是交叉编译,是默认编译libusb,然后再生成这个文件,那么可以直接在PC机上运行a.out,可以看到系统检测出PID,VID。
这些内容其实网上有很多,推荐个博客:https://blog.csdn.net/psy6653/article/details/56678276
至于使用,后面搞完了再来写
更多推荐
所有评论(0)