參考博客:
軟件包:libusb源碼:http://www./
編譯環(huán)境:
主機(jī):ubuntu 16.04
ARM交叉編譯工具鏈: arm-linux-gnueabihf-
步驟如下:
1、下載libusb-1.0.9軟件包和libusb-compat-0.1.4軟件包(我實(shí)際沒(méi)有用到這個(gè)庫(kù))http://www./
2、解壓
tar -jxvf libusb-1.0.9.tar.bz2
3、編譯與安裝
$ cd libusb-1.0.9/ #進(jìn)入libusb-1.0.9目錄
$ mkdir install #創(chuàng)建軟件安裝目錄
$ ./configure --build=i686-linux --host=arm-linux --prefix=`pwd`/install CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ #配置編譯環(huán)境
$ make # 開(kāi)始編譯
$ make install #安裝
說(shuō)明一下:
–build=i686-linux表示該軟件在x86平臺(tái)上被編譯
–host=arm-linux表示該軟件編譯完成后在arm平臺(tái)上運(yùn)行
–prefix后面為軟件安裝目錄
4、檢驗(yàn)編譯結(jié)果是否就是ARM平臺(tái)可用的庫(kù):
~/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庫(kù)中可用的庫(kù)函數(shù):
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函數(shù),沒(méi)有usb開(kāi)頭的函數(shù)
編譯libusb-compat-0.1.4軟件包
與編譯libusb-1.0.9軟件包的方法類(lèi)似,但要注意編譯libusb-compat-0.1.4(依賴(lài)于libusb-1.0.4的編譯結(jié)果,故configure時(shí)需要額外指定其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庫(kù)
1、需要將生成的庫(kù)復(fù)制到開(kāi)發(fā)板上程序才能運(yùn)行。
2、編寫(xiě)程序時(shí)我把庫(kù)文件直接放在工程目錄下了。
3、Makefile書(shū)寫(xiě)
#指定頭文件目錄
INCLUDE_DIRS = -I. -I./udb_busi/hid/libusb-1.0.9/include/libusb-1.0
#指定庫(kù)文件
LIBS_USB = -lusb-1.0 -lpthread -L./udb_busi/hid/libusb-1.0.9/lib
至此,完!
|