8

How can I differentiate between RTLD_LAZY and RTLD_NOW and when to use what in code?

wasnaz
  • 89
  • 1
  • 2

1 Answers1

12

How can I differentiate between RTLD_LAZY and RTLD_NOW and when to use what in code?

You want to use RTLD_NOW when:

  1. you want to be notified that the library you dlopened has no unresolved symbols at load time, rather than at arbitrary later time
  2. you want to pay the price (CPU, possible delays) of symbol resolution at load time, rather than at arbitrary later time

You want to use RTLD_LAZY when

  1. you know that the library does have unresolvable symbols, but you are not using that part of the library
  2. generally, if you only use a few symbols from the library, and the library itself has a lot of symbols that would need resolution, but you aren't using most of them
  3. when failure to resolve a symbol after loading and resulting process termination is "ok".
Employed Russian
  • 199,314
  • 34
  • 295
  • 362