参考博客:
主机:ubuntu 16.04ARM交叉编译工具链: arm-linux-gnueabihf-
步骤如下:
1、下载libusb-1.0.9软件包和libusb-compat-0.1.4软件包(我实际没有用到这个库)http://www.libusb.org/
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.0libusb-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.000004824 T libusb_lock_event_waiters00003304 T libusb_open00003404 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
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
至此,完!
联系客服