2017-02-16 8 views
0

Я завернул свою программу (которая зависит от Boost) в общую библиотеку (скажем libabc.so), которая отлично работает на моей машине.Как я могу сделать работу с общей библиотекой в ​​разных версиях библиотек (зависит от cmake)?

Когда я скопировал libabc.so на другую машину, которая имеет другую версию Boost, установленную компилятор не может связать libabc.so с этой версией, и когда я напечатал ldd libabc.so он сказал, что библиотека импульса не была найдена.

Как я могу решить это с помощью cmake?
Есть ли способ обертывания библиотек, все зависит друг от друга в одном файле libabc.so?


Я знаю, что это вопрос начального уровня и, возможно, там уже несколько подобных вопросов уже на SO, которые я не смог найти, но этот вопрос Link the static versions of the Boost libraries using CMake кажется нет.

+0

Возможный дубликат [Ссылка на статические версии библиотек Boost с помощью CMake] (http://stackoverflow.com/questions/3176035/link-the-static-versions-of-the-boost-libraries-using-cmake) – usr1234567

+0

0 Что вы знаете 'ldd libabc.so'? В частности, как выглядят имена библиотек boost? Есть ли у них какая-либо версия в их именах? – zaufi

+0

@zaufi спасибо за ответ, он говорит: 'libboost_system.so.1.54.0 => не найден', а фактическая версия, установленная на другом компьютере, составляет 1.58 – dontloo

ответ

1

Используйте boost bcp, чтобы обернуть вашу версию boost в другое пространство имен, а затем вы можете иметь несколько версий для ускорения в одном приложении.

+0

спасибо за ответ, на самом деле я не мог знать, какая версия повышения установлена ​​на другие машины (и мне, наверное, все равно), есть ли способ заставить его работать над любой версией ускорения, установленной на других машинах? – dontloo

+0

Да, если вы используете boost bcp и завершаете повышение в другом пространстве имен, как я писал в ответ. Тогда это не имеет значения. – mantler

+0

Спасибо! я попробую – dontloo