Мне нужно запустить программу, которая использует ftd2xx на моем BeagleBoard xM rev C под управлением Ubuntu 12.04. Я пытаюсь использовать библиотеку ARM libftd2xx.so, предоставленную здесь. libFTDI не подходит.
Разница, которую я заметил, происходит от запуска readelf -hA
на libftd2xx.so по сравнению с другими библиотеками на BeagleBoard, которые работают. В разделе, относящемся к архитектуре, имя ОС указано как «ARM926EF-S» для ftd2xx вместо «7-A» для других библиотек и CPU_arch как «v5TEJ» вместо «v7».
Я предполагаю, что это означает, что библиотека предназначена для набора инструкций ARM v5, а BeagleBoard работает под управлением ARM v7. Есть ли способ заставить ftd2xx работать?
Изменить: мне сказали, что ARM7 обратно совместима с ARM5, но это не решает мою проблему.
Также следует отметить, что запуск ldd libftd2xx.so
на BeagleBoard не отображает зависимости, а выводит not a dynamic executable
, тогда как он работает с другими библиотеками.
РЕДАКТИРОВАТЬ 2:
Проблема, похоже, связана с ABI с мягким и жестким плаванием. У меня есть образ gnueabihf на BeagleBoard xM. Когда я пытаюсь скомпилировать пример программы со статическим 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 предоставила мне работающую версию своей библиотеки с жесткой плавающей запятой. Я предоставляю его здесь после того, как многие люди индивидуально запросили его:
ldd
, на хосте? попробуйтеreadelf |grep Shared
. Вам может понадобиться ldd с опорой для рук или что-то в этом роде. (stackoverflow.com/questions/6150000/cross-compiler-ldd) Вы должны попытаться докопаться до такая информация, как использование strac, проверка журналов и т. д. Читали ли вы README с сайта ftdi? - person auselen   schedule 13.03.2013ldd
на BeagleBoard, так что он уже должен работать с версией ARM (работает с библиотеками ARM в / usr / lib). Я прочитал ридми и безрезультатно связался с FTDI. Я смотрел на strace, но не знаю, как это интерпретировать. - person hayk.mart   schedule 13.03.2013