我在我的项目中使用cpprestsdk/casablanca
。 cpprestsdk
依赖于Boost
库。几周前,我下载了cpprest
的来源,并使用*.so
和Boost 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
,但它只能在下次更新时使用。
我想,为了完全构建我的项目,我应该将Boost
,SSL
和其他依赖项的特定版本嵌入到我的项目中。
这种问题的一般解决方案是什么?如何管理和部署共享库的自定义(非系统端)版本?每个“大”库都有自己的安装系统/脚本,所以我不知道如何将它集成到我自己的项目的构建系统中。我之前从未遇到过库的问题所以我不确定选择哪条路径。我正在使用Makefile
来构建我的项目。