Biblioteca compartilhada ARM v5 (ftd2xx) na plataforma ARM v7 - problema rígido versus flutuante soft
Eu preciso executar um programa que usa ftd2xx no meu BeagleBoard xM rev C rodando o Ubuntu 12.04. Estou tentando usar a biblioteca ARM libftd2xx.so fornecidaAqui. libFTDI não é uma opção.
A diferença que notei vem da corridareadelf -hA
no libftd2xx.so vs outras bibliotecas no BeagleBoard que funcionam. A seção específica do arco fornece o nome do SO como "ARM926EF-S" para ftd2xx em vez de "7-A" para outras bibliotecas e CPU_arch como "v5TEJ" em vez de "v7".
Estou assumindo que isso significa que a biblioteca é destinada ao conjunto de instruções ARM v5 e que o BeagleBoard está executando o ARM v7. Existe alguma maneira de fazer o ftd2xx funcionar?
Edit: Eu tenho dito ARM7 é retrocompatível com o ARM5, mas isso não resolve o meu problema.
Outra coisa a notar é que correrldd libftd2xx.so
no BeagleBoard não lista as dependências, mas imprimenot a dynamic executable
, enquanto trabalha em outras bibliotecas.
EDIT 2:
A questão parece ser com um ABI soft vs. hard float. Eu tenho uma imagem gnueabihf no BeagleBoard xM. Quando tento compilar um programa de exemplo com a libftd2xx.a estática, recebo muitos destes:
/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)
Se eu tentar compilar commfloat-abi=soft
oumfloatabi=softfp
, Eu recebo
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
Eu também tentei cruzar compilar comarm-linux-gnueabi
ao invés dearm-linux-gnueabihf
, mas o programa resultante não é executado no BeagleBoard. Existe alguma coisa que eu possa fazer ou é impossível?
--------- SOLUÇÃO ----------------
Depois de alguns problemas, o FTDI me forneceu uma versão hard float de sua biblioteca que funciona. Eu estou fornecendo aqui depois que muitas pessoas solicitaram individualmente: