私はftdi D2XXドライバを使用してENTTEC DMX usb proデバイスとインターフェースするプロジェクトに取り組んでいます。 ftdiドライバ(/ usr/local/lib /に格納されているlibftdi2xx.so.1.1.12)は、glibc v2.14以降のバージョンに対してコンパイルされます。コンパイルされたライブラリをglibcの新しいバージョンにリンクする
私はglibc v2.13までしかサポートしていないdebian 7で開発しています。 (それはFTDIのドライバへの呼び出しを行う)私が書かれているCのコードを実行するとき、それはエラーを与える:
./a.out: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/lib/libftd2xx.so)
これはglibcのバージョンに互換性があることを知って、理にかなっています。私は自分のコンピュータ上で、コールを使用して(「〜/ glibcのテスト//libに/インストール」)一時ディレクトリにはglibcの最新版(v2.17)をダウンロードしてインストールしている:
~/glibc-testing/install/lib/ld-linux-x86-64.so.2 --library-path ~/glibc-testing/install/lib/ ./a.out
をしてこの呼び出しでは、Cコードを正常に実行することができます。
このCコードを共有ライブラリにコンパイルしたいと思います。これはDMXデバイスとのインターフェイスに使用され、C#で開発されたメインアプリケーションによって呼び出されます。
私は前進する方法がわかりません。私がやる必要があるのは、アプリケーションの残りの部分に通常のライブラリを使用させながら、新しいglibcを常に使用するようfdtiドライバに指示することです。 ftdi 2DXXドライバは、プリコンパイル(ソースコードなし)のみで利用できます。このプリコンパイルされたプログラムを新しいライブラリにリンクする方法はありますか?
LD_LIBRARY_PATH =/home /.../ glibc/install/lib /にエクスポートするオプションを調べましたが、ほとんど成功しませんでした。
ありがとうございました!
唯一目立った措置は、ドライバを作成して誰かと通信し、以前のglibcにリンクしたバージョンをリクエストすることです。 –
LD_PRELOADを使用してみましたか? – maha
私はrpathを設定すると、トリックを行う必要があります、[ここ](http://www.eyrie.org/~eagle/notes/rpath.html)を参照してください。 [コンパイル後にアプリケーション内のrpathをリセットすることもできます](https://stackoverflow.com/questions/13769141/can-i-change-rpath-in-an-already-compiled-binary)! – Bort