如果我运行foo命令,指定要使用的不同的libc,如下所示:
LD_LIBRARY_PATH=$PATH_TO_MY_CUSTOM_LIBC foo全局定义的libc是否用于运行上述命令?
为了上下文:考虑一下libc在计算机上的物理存在和可访问性的情况,但是由于某种原因不能使用。给定登录的shell,为了执行特定的命令,您需要提供不同的libc。
指定LD_LIBRARY_PATH内联,将其设置为工作的libc的位置,而不明显需要调用全局定义的libc。
为了在本地定义新的环境变量,会不会调用全局定义的libc?
发布于 2015-09-02 19:52:53
不是的。在/lib/libc.so.6的意义上,动态链接不是libc的一部分,它是/lib/ld.so的功能(在过去的几年中,两者的文件名和路径都发生了一些变化,但本质是相同的)。
是的,ld.so,动态链接器也是一个共享库。加载它是大多数linux二进制程序所做的第一件事,但在调用其main()函数之前。
尽管ld.so是libc的一个不同的文件,但它也是gnu发行版的一部分,包括源文件和编译的二进制格式。
ld.so中的链接是从gcc给出的硬编码代码块到每个linux二进制文件。它的路径也被硬编码成二进制文件。你不能轻易地改变它,尽管如果需要它是有可能的。
如果使用备用的libc.so.6设置覆盖LD_LIBRARY_PATH,则此库将用自己的库取代有序的libc,但它仍将由普通ld.so加载。
因此,你的问题的答案是“是的,但是.”。
https://unix.stackexchange.com/questions/227094
复制相似问题