3

共有ライブラリが欠落している (および関連する欠落しているシンボルが存在する) にもかかわらず、gcc/ld を強制的に先に進め、(部分的に) 使用可能な実行可能ファイルをリンクするにはどうすればよいですか?

コンテキスト: 32 ビット ELF バイナリ blob (libEposCmd.so) としてのみ配布されるハードウェア ドライバーがあります。コンテキストから実際には使用されていないことがわかっているライブラリ(libftd2xx.so)に依存しています(ftdiのものは、私が使用していないusbシリアルアダプター用です)。

gcc main.o -o epos_server -m32 -L/usr/lib32 -L/usr/local/lib32 -lEposCmd
/usr/bin/ld: warning: libftd2xx.so.0, needed by /usr/local/lib32/libEposCmd.so, not found (try using -rp
ath or -rpath-link)
main.o: In function `main':
/usr/local/lib32/libEposCmd.so: undefined reference to `FT_Write'
/usr/local/lib32/libEposCmd.so: undefined reference to `FT_SetDataCharacteristics'
/usr/local/lib32/libEposCmd.so: undefined reference to `FT_GetDeviceInfoDetail'
/usr/local/lib32/libEposCmd.so: undefined reference to `FT_SetFlowControl'
...

私の唯一の未定義の参照は FT_* で、これはすべて libftd2xx に属していると確信しています。

醜いハックは許容されます。これは研究用のコードであり、このハードウェア (maxon epos2 モーター ドライバー) を Linux 対応の優れたものに早急に置き換えたいと考えています。

更新: .so は ~ 削除されていないため、欠落している関数のプロトタイプを抽出できるはずです...

4

1 に答える 1

-1

最も簡単な方法は、不足している関数を含むダミー ライブラリを作成し、それをリンクすることです。

于 2012-07-06T13:54:40.750 に答える