我需要在運行Ubuntu 12.04的BeagleBoard xM rev C上運行使用ftd2xx的程序。我正在嘗試使用ARM庫libftd2xx.so提供的。 libFTDI不是一個選項。ARM v7平臺上的ARM v5共享庫(ftd2xx) - 硬vs軟問題
我注意到的差異來自libftd2xx.so上運行readelf -hA
與BeagleBoard上的其他庫的工作。特定於arch的部分爲ftd2xx提供的操作系統名稱爲「ARM926EF-S」,而不是其他庫的「7-A」,CPU_arch的操作系統名稱爲「v5TEJ」,而不是「v7」。
我假設這意味着該庫是爲ARM v5指令集設計的,並且BeagleBoard正在運行ARM v7。有什麼方法可以讓ftd2xx工作嗎?
編輯:我被告知ARM7向後兼容ARM5,但這並不能解決我的問題。
另一件需要注意的事情是在BeagleBoard上運行ldd libftd2xx.so
沒有列出依賴項,但打印出not a dynamic executable
,而它在其他庫上工作。
編輯2:
這個問題似乎是用軟VS硬浮ABI。 BeagleBoard xM上有一張gnueabihf圖片。當我嘗試編譯一個示例程序與靜態libftd2xx.a,我得到很多這樣的:
/usr/bin/ld: error: static_link_uses VFP register arguments, libftd2xx.a(file.o) does not
/usr/bin/ld: failed to merge target specific data of file libftd2xx.a(file.o)
如果我嘗試用mfloat-abi=soft
或mfloatabi=softfp
編譯,我得到
In file included from /usr/include/stdio.h:28:0,
from main.c:12:
/usr/include/features.h:324:26 fatal error: bits/predef.h: No such file or directory
compilation terminated
我也試着用arm-linux-gnueabi
而不是arm-linux-gnueabihf
進行交叉編譯,但是生成的程序不能在BeagleBoard上執行。有什麼我可以做或者是不可能的?
---------解決方案----------------
一些麻煩之後,FTDI與他們的圖書館的硬浮版本提供我哪些作品。我在這裏提供它之後很多人都單獨請求是:
https://s3.amazonaws.com/hayk-public/arm926-hf.zip
這是什麼工作不完全?你在哪裏運行'ldd',在主機上?嘗試'readelf | grep Shared'。您可能需要支持arm的LD或其他東西。 (http://stackoverflow.com/questions/6150000/cross-compiler-ldd)你應該嘗試挖掘更多的信息,比如使用strac,檢查日誌等。你是否從ftdi站點讀了README文件? – auselen 2013-03-13 07:56:17
我在BeagleBoard上運行'ldd',所以它應該已經通過ARM版本(它在/ usr/lib中的ARM庫上工作)。我閱讀了自述文件並聯繫了FTDI無濟於事。我看過strace,但我不知道如何解釋它。 – 2013-03-13 17:51:19
將strace粘貼到某處然後... – auselen 2013-03-13 18:01:02