2

特有の問題があります。gcc-4.2を使用して構築した共有ライブラリ「my_tracker.so」があります。この共有ライブラリは、libgcc_s.so.1(GCC 4.2)に依存するようになりました。'ldd my_tracker.so'を実行すると、/lib64からlibgcc_s.so.1が取得されました。

私は実行しています

'LD_PRELOAD=my_tracker.so LD_LIBRARY_PATH=[vnc_install]/lib/vnclibs:$LD_LIBRARY_PATH vncserver'

スクリプト内。[vnc_install]/lib/vnclibs/vncserverがlibgcc_so.1(GCC 3.2.3)をから取得していることを確認して、の前に配置したいと思いLD_LIBRARY_PATHます。

ただし、スクリプトを実行した後、vncserverがからlibgcc_s.so.1(GCC 4.2)を取得しているよう/lib64です。

プリロードされた共有ライブラリ'my_tracker.so'をロードするLD_LIBRARY_PATHと、libgcc_s.so.1(GCC 4.2)が見つかった場所の前にが追加されますか?

もしそうなら、どうすればこの問題を修正できますか?

よろしくジョン

4

1 に答える 1

0

これに対する解決策は、それを取得patchelfして使用し、バイナリとコピーされたライブラリにパッチを適用して、RPATH を使用することです。次に、LD_LIBRARY_PATH を完全に無視できます。また、バイナリをロードするために別の ld-linux.so が必要な場合は、バイナリを修正してpatchelfそれを見つけることもできます。

于 2011-07-14T06:09:09.683 に答える