RTLD_LAZY 和 RTLD_NOW 在代码中的用途是什么

was*_*naz 9 runtime dynamic dlopen

如何区分 RTLD_LAZY 和 RTLD_NOW 以及何时在代码中使用什么?

Emp*_*ian 14

如何区分 RTLD_LAZY 和 RTLD_NOW 以及何时在代码中使用什么?

您想在以下情况下使用RTLD_NOW

  1. 您希望dlopen在加载时收到通知,告知您所编辑的库没有未解析的符号,而不是在稍后的任意时间
  2. 你想在加载时支付符号解析的代价(CPU,可能的延迟),而不是在稍后的任意时间

你想用RTLD_LAZY什么时候

  1. 您知道该库确实有无法解析的符号,但您没有使用该库的该部分
  2. 一般来说,如果您只使用库中的几个符号,并且库本身有很多需要解析的符号,但您没有使用其中的大多数符号
  3. 当加载后无法解析符号并导致进程终止时“正常”。