Biblioteka współdzielona ARM v5 (ftd2xx) na platformie ARM v7 - problem twardego vs miękkiego floatu
Muszę uruchomić program, który używa ftd2xx na moim BeagleBoard xM rev C z Ubuntu 12.04. Próbuję użyć biblioteki ARM libftd2xx.so pod warunkiemtutaj. libFTDI nie jest opcją.
Różnica, którą zauważyłem, wynika z działaniareadelf -hA
na libftd2xx.so vs inne biblioteki na BeagleBoard, które działają. Sekcja specyficzna dla archa daje nazwę systemu operacyjnego jako „ARM926EF-S” dla ftd2xx zamiast „7-A” dla innych bibliotek i CPU_arch jako „v5TEJ” zamiast „v7”.
Zakładam, że oznacza to, że biblioteka jest przeznaczona dla zestawu instrukcji ARM v5, a BeagleBoard używa ARM v7. Czy jest jakiś sposób, aby uruchomić ftd2xx?
Edytuj: Powiedziano mi, że ARM7 jest wstecznie kompatybilny z ARM5, ale to nie rozwiązuje mojego problemu.
Inną rzeczą do odnotowania jest to, że działaldd libftd2xx.so
na BeagleBoard nie wyświetla zależności, ale drukujenot a dynamic executable
, podczas gdy działa na innych bibliotekach.
EDYCJA 2:
Problemem wydaje się być miękki vs twardy pływak ABI. Mam obraz gnueabihf na BeagleBoard xM. Kiedy próbuję skompilować przykładowy program ze statycznym libftd2xx.a, otrzymuję wiele z nich:
/usr/bin/ld: error: static_link_uses VFP register arguments, libftd2xx.a(file.o) does not<br>/usr/bin/ld: failed to merge target specific data of file libftd2xx.a(file.o)
Jeśli spróbuję się skompilowaćmfloat-abi=soft
lubmfloatabi=softfp
, Dostaję
In file included from /usr/include/stdio.h:28:0,<br>from main.c:12:<br>/usr/include/features.h:324:26 fatal error: bits/predef.h: No such file or directory<br>compilation terminated
Próbowałem też krzyżować się zarm-linux-gnueabi
zamiastarm-linux-gnueabihf
, ale wynikowy program nie działa na BeagleBoard. Czy jest coś, co mogę zrobić, czy jest to niemożliwe?
--------- ROZWIĄZANIE ----------------
Po pewnych kłopotach FTDI dostarczyło mi twardą wersję float ich biblioteki, która działa. Dostarczam go tutaj, gdy wiele osób indywidualnie o to poprosiło: