参考博客:
软件包:libusb源码:http://www./
编译环境:
主机:ubuntu 16.04
ARM交叉编译工具链: arm-linux-gnueabihf-
步骤如下:
1、下载libusb-1.0.9软件包和libusb-compat-0.1.4软件包(我实际没有用到这个库)http://www./
2、解压
tar -jxvf libusb-1.0.9.tar.bz2
3、编译与安装
$ cd libusb-1.0.9/ #进入libusb-1.0.9目录
$ mkdir install #创建软件安装目录
$ ./configure --build=i686-linux --host=arm-linux --prefix=`pwd`/install CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ #配置编译环境
$ make # 开始编译
$ make install #安装
说明一下:
–build=i686-linux表示该软件在x86平台上被编译
–host=arm-linux表示该软件编译完成后在arm平台上运行
–prefix后面为软件安装目录
4、检验编译结果是否就是ARM平台可用的库:
~/code/libusb-1.0.9/install/lib$ file libusb-1.0.so.0.1.0
libusb-1.0.so.0.1.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=7cfde4289fc5e33bbb72707e4edc35b9b8f8b163, not stripped
#查看.so库中可用的库函数:
lambda@lambda:~/code/libusb-1.0.9/install/lib$ nm libusb-1.0.so.0.1.0
00004824 T libusb_lock_event_waiters
00003304 T libusb_open
00003404 T libusb_open_device_with_vid_pid
...都是libusb函数,没有usb开头的函数
编译libusb-compat-0.1.4软件包
与编译libusb-1.0.9软件包的方法类似,但要注意编译libusb-compat-0.1.4(依赖于libusb-1.0.4的编译结果,故configure时需要额外指定其PKG_CONFIG_PATH)
./configure --build=i686-linux --host=arm-linux --prefix=`pwd`/install CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ PKG_CONFIG_PATH=/home/lambda/code/libusb-1.0.9/install/lib/pkgconfig
使用交叉编译后的libusb库
1、需要将生成的库复制到开发板上程序才能运行。
2、编写程序时我把库文件直接放在工程目录下了。
3、Makefile书写
#指定头文件目录
INCLUDE_DIRS = -I. -I./udb_busi/hid/libusb-1.0.9/include/libusb-1.0
#指定库文件
LIBS_USB = -lusb-1.0 -lpthread -L./udb_busi/hid/libusb-1.0.9/lib
至此,完!
|