私は、Ubuntu 12.04を実行しているBeagleBoard xM rev Cでftd2xxを使用するプログラムを実行する必要があります。私はを提供しているARMライブラリlibftd2xx.soを使用しようとしています。 libFTDIはオプションではありません。ARM v7プラットフォームのARM v5共有ライブラリ(ftd2xx) - ハードフロート問題とソフトフロート問題
私が気づいた違いは、libftd2xx.soと動作するBeagleBoard上の他のライブラリとの間でreadelf -hA
を実行したことです。アーチ固有のセクションでは、他のライブラリでは "7-A"ではなく、 "v7"ではなく "v5TEJ"としてCPU_archを使用する代わりに、ftd2xxに対してOS名を "ARM926EF-S"としています。
これは、ライブラリがARM v5命令セット用であり、BeagleBoardがARM v7を実行していると仮定しています。 ftd2xxを動作させる方法はありますか?
編集:ARM7はARM5と下位互換性があると言われましたが、それでも問題は解決しません。
BeagleBoardでldd libftd2xx.so
を実行しても依存関係は表示されませんが、not a dynamic executable
が表示されますが、他のライブラリでは機能します。
EDIT 2:
問題はハードフロート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-gnueabihf
ではなくarm-linux-gnueabi
でクロスコンパイルを試みましたが、結果のプログラムはBeagleBoardで実行されません。私は何かできますか、それは不可能ですか?
--------- SOLUTION ----------------
いくつかのトラブルの後、FTDIはそのライブラリーのハードfloatバージョンを提供してくれました働く
https://s3.amazonaws.com/hayk-public/arm926-hf.zip
正確には動作しないのは何ですか?あなたは 'ldd'をどこでホスト上で走らせますか? 'readelf | grep Shared'を試してください。あなたは腕のサポートや何かのlddが必要な場合があります。 (http://stackoverflow.com/questions/6150000/cross-compiler-ldd)stracの使用、ログの確認などの情報をもっと探してみるべきです。ftdiサイトからREADMEを読んだことはありますか? – auselen
私はBeagleBoardで 'ldd'を実行していますので、すでにARMバージョンであるはずです(/ usr/libのARMライブラリで動作します)。私はreadmeを読んで、無駄にFTDIに連絡しました。私はstraceを見ましたが、私はそれをどのように解釈するのか分かりません。 –
どこかにstraceをペーストします。 – auselen