libusb移植到Android開發(fā)板

前言
因公司業(yè)務(wù)需要霸妹,需要做大量的C++代碼遷移到Android方面的工作瞻赶,這是一個(gè)費(fèi)時(shí)費(fèi)力的過程维雇,因?yàn)檫w移過程中會遇到各種各樣的問題赊舶,小到.h頭文件找不到睁搭,大到一個(gè)運(yùn)行不正常。
這是我在簡書上的第一篇文章笼平,就以遷移libusb到Android開發(fā)板為例园骆,整理出本人遇到的問題及解決方法,希望對有需要的朋友有所幫助:
使用環(huán)境

環(huán)境:Ubuntu 14.04 寓调,tiny4412(Android開發(fā)板)
工具:NDK锌唾,CatkinMake
編譯包:libusb1.0,libusb0.12

既然要編譯libusb夺英,就要了解它晌涕,目前為止,libusb庫大版本分為1.0.X, 0.XX,且兩個(gè)大版本庫中方法差別挺大痛悯。
libusb1.X與libusb0.X版本語法比較
libusb1.0.x主要語法余黎,太多了,截取了部分


圖1 libusb1.0XX版本部分語法截圖

libusb-0.XX版本


圖2 libusb0.XX版本部分語法截圖

查看.so庫中包含語法可在linux系統(tǒng)下通過 nm命令载萌,例:$ nm libusb.so
編譯libusb1.X惧财,libusb0.x
libusb1.X
源碼下載:https://github.com/libusb/libusb.git
上邊作者介紹有編譯方法,這里引用了也提及下扭仁,尊重原著垮衷,感謝開源奉獻(xiàn);
考慮到部分人可能未使用過ndk乖坠,這里也簡單介紹下編譯方法搀突,及如何編譯出動(dòng)態(tài)庫.so,靜態(tài)庫.a
注:大牛瓤帚,使用過的朋友可忽略這部分描姚,請輕噴涩赢。
編譯:進(jìn)入jni目錄下戈次,通過ndk-build命令編譯
庫:默認(rèn)編譯為動(dòng)態(tài)庫.so轩勘,如需編譯靜態(tài)庫,將libusb.mk最后一行

include $(BUILD_SHARED_LIBRARY)改為:include $(BUILD_STATIC_LIBRARY)

編譯運(yùn)行即可怯邪。
libusb0.X
下載libusb-0.1.12軟件包:http://sourceforge.net/projects/libusb/files/
解壓開绊寻,執(zhí)行
<pre>
./configure --host=arm-none-linux-gnueabi --prefix=/home/ubuntu/Downloads/install
make
make install
</pre>
注:host為使用的編譯鏈,prefix為編譯出的文件路徑
連接libusb庫
在CmakeLists通過link_libraries悬秉,target_link_libraries引入.so澄步、.a庫
通過include_directories引入.h頭文件
例:
.h頭文件

set(libusb_INCLUDE_DIRS "/opt/include/mylibusb")
include_directories(${libusb_INCLUDE_DIRS})

.so 、.a庫

set(libusb_LIBRARIES "/opt/lib/libusb-0.1.so")
target_link_libraries(xxx ${libusb_LIBRARIES})
link_libraries(${libusb_LIBRARIES})

遇到的問題:
<pre>
1.error: undefined reference to 'libusb_bulk_transfer'
原因:缺少或找不到libusb包和泌,編譯中存在使用該包的依賴村缸;
解決方法將libusb包編譯成arm的添加進(jìn)去
</pre>
<pre>
2.No rule to make target `/opt/lib/libusb-0.1.so'
原因:MakeFile文件中沒有對應(yīng)的關(guān)聯(lián)映射
解決方法:檢查是否路徑引用有問題,多數(shù)是語法(Cmake)問題武氓。
</pre>
<pre>
3.can't find -lusb
原因:找不到libusb.so包
解決方法:查看引用路徑時(shí)候有問題梯皿,確保libusb正確引用。
</pre>
總結(jié)
總體來說县恕,該篇定位為libusb遷移入門引導(dǎo)篇更為合適东羹,權(quán)且拋磚引玉,希望對大家有所幫助忠烛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末属提,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子美尸,更是在濱河造成了極大的恐慌冤议,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件师坎,死亡現(xiàn)場離奇詭異恕酸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)屹耐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門尸疆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惶岭,你說我怎么就攤上這事寿弱。” “怎么了按灶?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵症革,是天一觀的道長。 經(jīng)常有香客問我鸯旁,道長噪矛,這世上最難降的妖魔是什么量蕊? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮艇挨,結(jié)果婚禮上残炮,老公的妹妹穿的比我還像新娘。我一直安慰自己缩滨,他們只是感情好势就,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脉漏,像睡著了一般苞冯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侧巨,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天舅锄,我揣著相機(jī)與錄音,去河邊找鬼司忱。 笑死皇忿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烘贴。 我是一名探鬼主播禁添,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桨踪!你這毒婦竟也來了老翘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤锻离,失蹤者是張志新(化名)和其女友劉穎铺峭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汽纠,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卫键,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虱朵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莉炉。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖碴犬,靈堂內(nèi)的尸體忽然破棺而出絮宁,到底是詐尸還是另有隱情,我是刑警寧澤服协,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布绍昂,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窘游。R本人自食惡果不足惜唠椭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忍饰。 院中可真熱鬧贪嫂,春花似錦、人聲如沸喘批。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饶深。三九已至,卻和暖如春逛拱,著一層夾襖步出監(jiān)牢的瞬間敌厘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工朽合, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俱两,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓曹步,卻偏偏與公主長得像宪彩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子讲婚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容