Мне нужно запустить программу, которая использует ftd2xx на моем BeagleBoard xM rev C, работающем под Ubuntu 12.04. Я пытаюсь использовать библиотеку ARM libftd2xx.so при условии, что . libFTDI не вариант.Общая библиотека ARM v5 (ftd2xx) на платформе ARM v7 - проблема жесткого против мягкого плавания
Отличие, которое я заметил, происходит от запуска 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
, тогда как он работает с другими библиотеками.
EDIT 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 предоставил мне жесткий вариант поплавка их библиотеки, которая работает. Я снабдив его здесь после того, как многие люди по отдельности просили его:
https://s3.amazonaws.com/hayk-public/arm926-hf.zip
Что это не работает? где вы запускаете 'ldd', на хосте? попробуйте 'readelf | grep Shared'. Вам может понадобиться ldd с поддержкой руки или что-то в этом роде. (http://stackoverflow.com/questions/6150000/cross-compiler-ldd). Вы должны попытаться копать больше информации, например, используя strac, проверку журналов и т. д. Вы читали README с сайта ftdi? – auselen
Я запускаю 'ldd' на BeagleBoard, поэтому он должен быть уже версией ARM (он работает с библиотеками ARM в/usr/lib). Я прочитал readme и связался с FTDI безрезультатно. Я посмотрел на strace, но я не знаю, как это интерпретировать. –
Вставить strace в то место, где ... – auselen