要用到才开始学,啥都不懂,感觉好难受。

最近要在ARM+Linux嵌入式端集成libusb,刚开始搞,慢慢写。

首先是libusb的交叉编译和测试。

交叉编译:

下载libusb的源码,下载地址:https://sourceforge.net/projects/libusb/files/,下载好后解压(我是下载了两个版本,libusb-1.0.20.tar.bz2libusb-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


至于使用,后面搞完了再来写


Logo

更多推荐