如何正确解决提升依赖问题

时间:2018-01-11 13:34:06

标签: c++ linux boost build dependencies

我在我的项目中使用cpprestsdk/casablancacpprestsdk依赖于Boost库。几周前,我下载了cpprest的来源,并使用*.soBoost 1.65.1的某个版本构建了OpenSSL库。我的系统是Arch Linux。 由于最近发生了Meltdown和Spectre漏洞的事件,我已经进行了完整的系统升级(内核4.14,最新版本的库),现在我有了Boost 1.66.0和更新版本的OpenSSL

当我尝试编译项目时,链接器声明了

libboost_[random, system, etc. - there are many of them].so.1.65.1, needed by /usr/local/lib/libcpprest.so, not found (try using -rpath or -rpath-link)

它还显示有关SSL的警告,因为cpprestsdk的最新版本与OpenSSL 1.1+不兼容,因此您必须使用之前的版本(cpprest)构建它。

 libcrypto.so.1.0.0, needed by /usr/local/lib/libcpprest.so, may conflict with libcrypto.so.1.1.

显然,我的系统上没有boost 1.65.1安装,所以使用-rpath是没有意义的。

我认为我应该构建另一个版本的boost,但有几个消息来源声称在一个系统上存储多个版本的boost是个坏主意。我不知道如何正确存储自定义boost版本。 我可以使用当前库重建libccprest,但它只能在下次更新时使用。 我想,为了完全构建我的项目,我应该将BoostSSL和其他依赖项的特定版本嵌入到我的项目中。

这种问题的一般解决方案是什么?如何管理和部署共享库的自定义(非系统端)版本?每个“大”库都有自己的安装系统/脚本,所以我不知道如何将它集成到我自己的项目的构建系统中。我之前从未遇到过库的问题所以我不确定选择哪条路径。我正在使用Makefile来构建我的项目。

0 个答案:

没有答案