我编译了一个需要libboost-system1.46
的C ++程序。我使用的是Ubuntu 14.04,所以我有libboost-system1.54
。当我运行该程序时,它说没有找到libboost_filesystem.so.1.46.1
。我怎样才能(如果可能的话)使程序与libboost-system1.54
一起使用。也许在那里我们指定使用哪个版本。我的想法是正确的吗?
答案 0 :(得分:2)
您需要针对较新版本的库重新编译。 AFAIK boost库在版本之间不是二进制兼容的,所以很简单。你可以做一些技巧,使用其他版本(符号链接或其他魔法),但它很可能不起作用。
因此,您需要提供所需的版本或更改要求 - 重新编译。
如果您编写程序或构建程序,则只需要在make
或编译之前使用所有配置重复整个构建过程。从技术上讲,只需重新链接即可,但是像CMake这样的系统会缓存在此步骤中评估的配置选项,而简单地再次调用make
将不起作用。所以我建议重复整个过程。
无论程序是什么,只需重复它就足够了。
答案 1 :(得分:-2)
您可以创建一个符号链接,将libboost-system1.46名称指向libboost-system1.54。
只要您使用的功能的接口没有改变,这将起作用,但这可能不是一个好主意。它可能只是让您的代码进行测试,但永远不适合任何类型的发布软件。
您应该尝试使用较新版本的boost重新编译您的程序。