code: def gen_lib_options(
      compiler, library_dirs, runtime_library_dirs, libraries
  ):
      """Generate linker options for searching library directories and
      linking with specific libraries.  'libraries' and 'library_dirs' are,
      respectively, lists of library names (not filenames!) and search
      directories.  Returns a list of command-line options suitable for use
      with some compiler (depending on the two format strings passed in).
      """
      lib_opts = []
  
      for dir in library_dirs:
          lib_opts.append(compiler.library_dir_option(dir))
  
      for dir in runtime_library_dirs:
          opt = compiler.runtime_library_dir_option(dir)
          if isinstance(opt, list):
              lib_opts = lib_opts + opt
          else:
              lib_opts.append(opt)
  
      # XXX it's important that we *not* remove redundant library mentions!
      # sometimes you really do have to say "-lfoo -lbar -lfoo" in order to
      # resolve all symbols.  I just hope we never have to say "-lfoo obj.o
      # -lbar" to get things to work -- that's certainly a possibility, but a
      # pretty nasty way to arrange your C code.
  
      for lib in libraries:
          (lib_dir, lib_name) = os.path.split(lib)
          if lib_dir:
              lib_file = compiler.find_library_file([lib_dir], lib_name)
              if lib_file:
                  lib_opts.append(lib_file)
              else:
                  compiler.warn(
                      "no library file corresponding to "
                      "'%s' found (skipping)" % lib
                  )
          else:
              lib_opts.append(compiler.library_option(lib))
      return lib_opts
  
imports: import sys
  import os
  import re
  import warnings
  from .errors import CompileError, LinkError, UnknownFileError, DistutilsPlatformError, DistutilsModuleError
  from .spawn import spawn
  from .file_util import move_file
  from .dir_util import mkpath
  from ._modified import newer_group
  from .util import split_quoted, execute
  from ._log import log
label_desc: Use image node_id 5 for calling a global function with example usage: gen_lib_options(compiler, library_dirs, runtime_library_dirs, libraries) and returns: lib_opts