代码中RTLD_LAZY和RTLD_NOW的用例是什么

问题描述

如何区分RTLD_LAZY和RTLD_Now,以及何时使用代码中的内容

解决方法

如何区分RTLD_LAZY和RTLD_NOW,以及何时使用代码中的内容?

您希望在以下情况下使用RTLD_NOW

  1. 您想通知您dlopen创建的库在加载时(而不是在以后的任意时间)没有未解析的符号
  2. 您要在加载时而不是在以后的任意时间支付符号解析的价格(CPU,可能的延迟)

您希望在以下情况下使用RTLD_LAZY

  1. 您知道该库确实具有无法解析的符号,但是您没有使用该库的那一部分
  2. 通常,如果您仅使用库中的几个符号,并且库本身有很多需要解析的符号,但您并没有使用其中的大多数符号
  3. 在加载后无法解析符号并导致进程终止的情况为“正常”。