Как библиотека может быть одновременно статической и общей?

Что означает, что библиотека может быть как статической, так и совместно используемой? Из того, что я читал, эти два понятия взаимоисключающие. Люди склонны определять одно как противоположное другому.

Но читая параметры конфигурации для LAME, я вижу это.

  $ ./configure --help
  `configure' configures lame 3.99.5 to adapt to many kinds of systems.
  [...]
  --enable-shared[=PKGS]  build shared libraries [default=yes]
  --enable-static[=PKGS]  build static libraries [default=yes]
  [...]

person Elliott B    schedule 31.03.2014    source источник


Ответы (1)


Эти флаги создают как разделяемые библиотеки, так и статические библиотеки, они не пытаются создать единую библиотеку как статической, так и общей.

Как вы сказали, они в некотором смысле «взаимоисключающие» — ни один файл не может быть одновременно статической и общей библиотекой.

В системе Linux, включающей как статическую, так и общую компиляцию библиотек, вы получите файлы *.a и *.so, файл *.so используется для динамического (общего) связывания, а файл *.a используется для статического связывание.

person photoionized    schedule 07.04.2014