分享

Ubuntu交叉编译libusb库

 昵称52164085 2018-03-09

参考博客:

软件包: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 #安装
  • 1
  • 2
  • 3
  • 4
  • 5

说明一下:
–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开头的函数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

编译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

使用交叉编译后的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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

至此,完!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多