docstr: Return the list of libraries to link against when building a
  shared extension.  On most platforms, this is just 'ext.libraries';
  on Windows, we add the Python library (eg. python20.dll).
docstr_tok: ["Return","the","list","of","libraries","to","link","against","when","building","a","shared","extension",".","On","most","platforms",",","this","is","just","'ext.libraries","'",";","on","Windows",",","we","add","the","Python","library","(","eg",".","python20.dll",")","."]
code: def get_libraries(self, ext):  # noqa: C901
      """Return the list of libraries to link against when building a
      shared extension.  On most platforms, this is just 'ext.libraries';
      on Windows, we add the Python library (eg. python20.dll).
      """
      # The python library is always needed on Windows.  For MSVC, this
      # is redundant, since the library is mentioned in a pragma in
      # pyconfig.h that MSVC groks.  The other Windows compilers all seem
      # to need it mentioned explicitly, though, so that's what we do.
      # Append '_d' to the python import library on debug builds.
      if sys.platform == "win32":
          from .._msvccompiler import MSVCCompiler
  
          if not isinstance(self.compiler, MSVCCompiler):
              template = "python%d%d"
              if self.debug:
                  template = template + "_d"
              pythonlib = template % (
                  sys.hexversion >> 24,
                  (sys.hexversion >> 16) & 0xFF,
              )
              # don't extend ext.libraries, it may be shared with other
              # extensions, it is a reference to the original list
              return ext.libraries + [pythonlib]
      else:
          # On Android only the main executable and LD_PRELOADs are considered
          # to be RTLD_GLOBAL, all the dependencies of the main executable
          # remain RTLD_LOCAL and so the shared libraries must be linked with
          # libpython when python is built with a shared python library (issue
          # bpo-21536).
          # On Cygwin (and if required, other POSIX-like platforms based on
          # Windows like MinGW) it is simply necessary that all symbols in
          # shared libraries are resolved at link time.
          from ..sysconfig import get_config_var
  
          link_libpython = False
          if get_config_var("Py_ENABLE_SHARED"):
              # A native build on an Android device or on Cygwin
              if hasattr(sys, "getandroidapilevel"):
                  link_libpython = True
              elif sys.platform == "cygwin":
                  link_libpython = True
              elif "_PYTHON_HOST_PLATFORM" in os.environ:
                  # We are cross-compiling for one of the relevant platforms
                  if get_config_var("ANDROID_API_LEVEL") != 0:
                      link_libpython = True
                  elif get_config_var("MACHDEP") == "cygwin":
                      link_libpython = True
  
          if link_libpython:
              ldversion = get_config_var("LDVERSION")
              return ext.libraries + ["python" + ldversion]
  
      return ext.libraries + py37compat.pythonlib()
  
imports: import contextlib
  import os
  import re
  import sys
  from ..core import Command
  from ..errors import DistutilsOptionError, DistutilsSetupError, CCompilerError, DistutilsError, CompileError, DistutilsPlatformError
  from ..sysconfig import customize_compiler, get_python_version
  from ..sysconfig import get_config_h_filename
  from .._modified import newer_group
  from ..extension import Extension
  from ..util import get_platform
  from distutils._log import log
  from .None import py37compat
  from site import USER_BASE
label_desc: Use image node_id 18 for calling the build_ext obj's underlying member method code with example usage: obj.get_libraries(ext) and returns: unknown, unknown, unknown