Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux LD_预加载更改LD_库路径_Linux_Environment Variables_Ld_Rpath - Fatal编程技术网

Linux LD_预加载更改LD_库路径

Linux LD_预加载更改LD_库路径,linux,environment-variables,ld,rpath,Linux,Environment Variables,Ld,Rpath,我有一个特殊的问题。我有一个共享库“my_tracker.so”,它是我使用gcc-4.2构建的。这个共享库现在依赖于libgcc_.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' 在我的剧本里面。我想确保vncse

我有一个特殊的问题。我有一个共享库“my_tracker.so”,它是我使用gcc-4.2构建的。这个共享库现在依赖于libgcc_.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/获取libgcc_so.1 GCC 3.2.3,并因此将其放在LD_LIBRARY_路径的前面

但是,在执行我的脚本之后,vncserver似乎正在从/lib64获取libgcc_.so.1 GCC 4.2

加载我预加载的共享库“my_tracker.so”是否在找到libgcc_s.so.1 GCC 4.2的LD_library_路径前加上前缀

如果是,如何解决此问题

问候
John

解决方法是获取patchelf并使用它修补二进制文件和任何复制的库,以使用RPATH。然后您可以完全忽略LD_LIBRARY_路径。如果您需要不同的ld-linux。因此,要加载二进制文件,patchelf也可以修复二进制文件以找到它。

解决方法是获取patchelf并使用它修补二进制文件和任何复制的库,以使用RPATH。然后您可以完全忽略LD_LIBRARY_路径。如果您需要另一个ld-linux.so来加载二进制文件,patchelf也可以修复二进制文件以找到它。

为什么您要使用旧版本的libgcc_.so.1?如果libc或其他东西需要更新的版本呢……不,我正在使用vncserver二进制文件链接到旧版本的libgcc_.so.1。我没有vncserver的源代码来重新编译它。但更广泛地说,如何在通用Linux系统上运行使用不同版本的gcc编译器编译的二进制文件以及与不同版本的libgcc_.so.1的链接?为什么要尝试使用旧版本的libgcc_.so.1?如果libc或其他东西需要更新的版本呢……不,我正在使用vncserver二进制文件链接到旧版本的libgcc_.so.1。我没有vncserver的源代码来重新编译它。但更广泛地说,如何在通用Linux系统上运行使用不同版本的gcc编译器编译的二进制文件以及与不同版本的libgcc_.so.1的链接?感谢您的建议。我会调查的。但是,我不认为这是一个通用的解决方案,因为我无法在我想要使用预加载库运行的每个二进制文件上运行patchelf。谢谢您的建议。我会调查的。然而,我不认为这是一个通用的解决方案,因为我无法在我想要使用预加载库运行的每个二进制文件上运行patchelf。