b2 and static link boost |
Здравствуйте, гость ( Вход | Регистрация )
b2 and static link boost |
alexy |
7.6.2017, 21:02
Сообщение
#1
|
Студент Группа: Участник Сообщений: 44 Регистрация: 4.8.2010 Пользователь №: 1931 Спасибо сказали: 0 раз(а) Репутация: 0 |
начал изучать b2, мне понравился, реншил сделать на нем небольшую библиотеку. сейчас напиасл несколько функций в ней, пока использую только header only библиотеки из буста, потом понадобятся и другие, не header only.
сейчас мой jamroot.jam выглядит так в ~/user-config.jam указывается где лежит только что распакованный boost1.64у меня несколько вопросов: 1. при компиляции говторит # error Must not define both BOOST_SYSTEM_DYN_LINK and BOOST_SYSTEM_STATIC_LINK что выглядит логично. он и правда определяет оба дефайна. как так? 2. зачем-то начинают компилится бустовые потоки (также если не указывать, что <threading>multi). это в принцыпе не мешает, но хотелось быт понять почему. 3. я правильно понял, что достаточно указать в списке исходников библиотеку буста, например /boost//filesystem/<link>static , и получить вкомпилинную в мой so библиотеку filesystem.a собранную со флагом -fPIC ? |
|
|
Iron Bug |
7.6.2017, 22:11
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
насчёт статической и динамической линковки буста, скорее всего, у тебя в /boost/config/user.hpp раскомментирован дефайн #define BOOST_ALL_DYN_LINK. а в своём проекте ты пытаешься линковать статически.
вообще, не все вещи можно линковать статически, но если утебя hеader-only библиотеки, то это должно работать, если закомментировать дефайн динамика. остальные дефайны в user.hpp тоже можешь проверить. они используются по умолчанию, если ты не задал свой конфиг для проекта. ещё можно посмотреть всякие там user-config.jam, если они имеются. про статик правильно. но не все библиотеки могут быть вкомпилены статически (например, использование NSS). во-вторых, статика не рекомендуется, потому что может вызывать проблемы с безопасностью (в библиотеке нашли и пофиксили баг, а ты свой бинарь должен будешь перекомпилировать сам). так что не всегда имеет смысл компилить статически. это довольно узкий круг задач. |
|
|
Текстовая версия | Сейчас: 25.11.2024, 8:27 |