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'

在我的脚本里面。我想确保 vncserver[vnc_install]/lib/vnclibs/LD_LIBRARY_PATH.

但是,在执行我的脚本后,看起来 vncserver 正在从/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 回答