LINUX.ORG.RU

прилинковать библиотеку статически в cmake

 , , ,


0

1

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

а то статическая либа, динамическая, статическая линковка динамической либы, путаница

.so - это всегда динамическая библиотека. Прилинковать ее статически невозможно. Статически прилинковать можно статическую библиотеку, у нее расшинение не .so, а .a.

AEP ★★★★★
()
Ответ на: комментарий от AEP

у меня вообще путаница... .a это статическа либа, или это архив какой-то там? и .so вообще нельзя собрать статически? или собрать можно, а лишь прелинковать нельзя?

xperious ★★
() автор топика

Похоже, так не получится сделать.

google://link so statically

anonymous
()
Ответ на: комментарий от xperious

вы хотите сказать, что нельзя прилинковать динамическую либу статически?

можно, но не очень надежно (не всегда получается), использовал такую: http://statifier.sourceforge.net/

anonymous
()
Ответ на: комментарий от xperious

.a - это статическая библиотека, или (как посмотреть - «лес» vs «деревья») архив из .o файлов.

Путаница про «сборку .so статически» появилась, так как у динамической библиотеки бывают зависимости. Зависимости можно прилинковать динамически (что в подавляющем большинстве случаев и делают) или, в теории, статически. «В теории» - поскольку для этого требуется, чтобы зависимости предоставляли третий тип библиотек, «статические с position-independent code», которые никто по факту не собирает (в дистрибутиве таких библиотек нет, ищи *_pic.a и не найдешь). В сухом остатке: .so по факту можно собрать только динамически.

А statifier мертв и является грязным хаком.

AEP ★★★★★
()
Последнее исправление: AEP (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.