我正在努力理解操作ld.so
的所有方法,但我无法理解LD_TRACE_PRELINKING
环境变量的文档。
手册页上写着:
LD_TRACE_PRELINKING (since glibc 2.4)
If this environment variable is defined, trace prelinking of the object whose name is assigned to this environment variable. (Use ldd(1) to get a list of the objects that might be traced.) If the object name is not recognized, then
all prelinking activity is traced.
这并不是很有用,因为我找不到任何关于上下文ld.so
中对象的预链接的信息,以及在激活LD_TRACE_LOADED_OBJECTS
时是否也跟踪它的信息。
那么,ld.so
中的预链接是什么?LD_TRACE_PRELINKING
如何影响ld.so
?
动态加载程序/链接器(如ld.so
(必须在程序执行开始时以及动态加载共享库时执行符号解析和绑定操作。其中一些活动可以在不实际执行程序代码的情况下提前执行,并且可以缓存结果以在实际执行期间使用。这提高了启动时间和整个程序执行时间。在linux上,prelink
是驱动此优化的工具,其核心功能在ld.so
中实现。