LINUX.ORG.RU

Динамический либ, сделанный из статического не виден cmake'у

 , ,


0

1

Здравствуйте. Собираю я ogre 3d, и один из доп пакетов - GLSL Optimizer. Однако он компилится в статические архивы ".a". Я компилирую эти три либа, добавив флаг -fPIC в CMakeList, потом декомпилирую командой ar -x и собираю в динамический либ ".so.2" и создаю символьные ссылки в /usr/local/lib. Так вот уже при сборке движка, эту библиотеку не видит cmake, другие видны, которые в той же директории.


".so.2"

Нужен симлинк на ".so", так как иначе линкеру не найти библиотеку. Не перебирать же все цифровые суффиксы.

libsomething.so --> libsomething.so.2

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)

Однако он компилится в статические архивы ".a". Я компилирую эти три либа, добавив флаг -fPIC в CMakeList

          add_library(<name> [STATIC | SHARED | MODULE]
                      [EXCLUDE_FROM_ALL]
                      source1 [source2 ...])

SHARED libraries are linked dynamically and loaded at runtime. If no type is given explicitly the type is STATIC or SHARED based on whether the current value of the variable BUILD_SHARED_LIBS is ON. For SHARED and MODULE libraries the POSITION_INDEPENDENT_CODE target property is set to ON automatically.

Не лучше ли добавить флаг SHARED в CMakeLists.txt?

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

Да, я смотрел как другие библиотеки устанавливались конфигураторами и по аналогии сделал реальное имя с версией и ссылку без цифр, но видимо, что-то еще надо, кстати ldconfig запускал тоже на всякий. Вот скрин. Скрин

gashik
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.