установка статической библиотеки под Linux - должна ли она быть похожей на установку динамической библиотеки? - PullRequest
1 голос
/ 10 января 2010

Я провел утро, выясняя, как в make-файле выполнить установку общей библиотеки под Linux.

Так что все в порядке; Теперь у меня есть общий объект и пара софт-ссылок на него, одна из которых была создана ldconfig, а другая - мной.

Теперь я также могу построить свою библиотеку как статическую библиотеку.

Когда я проверяю / usr / lib, я вижу, что файлы .a там просто находятся ... там. Нет символьных ссылок, нет нумерации версий и версий в именах файлов.

Должен ли я размещать мои статические библиотеки с символическими ссылками таким же образом, как я размещаю свои общие объекты, или на самом деле это обычное дело - просто размещать статическую библиотеку, не украшенную, в / usr / local / lib?

1 Ответ

1 голос
/ 10 января 2010

В отличие от разделяемых библиотек, статические библиотеки, помещенные в /lib, не участвуют в разрешении динамических связей. Они используются только при создании вашего приложения. Поэтому нет необходимости вставлять символические ссылки и точные номера выпусков в их имена файлов.

Когда вы связываете свое приложение со статической библиотекой, компоновщик просто встраивает код, найденный в папке /lib. Если в другой системе статическая библиотека с таким же именем будет отличаться, ваше приложение даже не узнает об этом. Поскольку он содержит код статической библиотеки, с которой он был скомпилирован, и не нуждается в поиске его в системе, в которой он работает.

Таким образом, установка статических библиотек должна отличаться от установки совместно используемых библиотек: детальное управление версиями в каталоге /lib фактически не требуется.

...