如何使我的程序与最新的boost库一起工作 我编译了一个C++程序,需要 LBooBoSTStase1.46。我使用的是Ubuntu 14.04,所以我有libboost-system1.54。当我运行程序时,它说没有找到libboost\u filesystem.so.1.46.1。如何(如果可能的话)使程序与libboost-system1.54一起工作。也许有一个地方我们可以指定使用哪个版本。我的想法正确吗?

如何使我的程序与最新的boost库一起工作 我编译了一个C++程序,需要 LBooBoSTStase1.46。我使用的是Ubuntu 14.04,所以我有libboost-system1.54。当我运行程序时,它说没有找到libboost\u filesystem.so.1.46.1。如何(如果可能的话)使程序与libboost-system1.54一起工作。也许有一个地方我们可以指定使用哪个版本。我的想法正确吗?,c++,ubuntu,boost,cmake,C++,Ubuntu,Boost,Cmake,您可以创建一个符号链接,将libboost-system1.46指向libboost-system1.54 只要您正在使用的功能的接口没有改变,这将起作用,尽管这可能不是一个好主意。它可能只是让你的代码运行和测试,但永远不会适合任何类型的发布软件 您应该尝试使用较新版本的boost重新编译程序。您需要根据较新版本的库重新编译程序。AFAIK boost库在版本之间不兼容二进制文件,所以很简单。您可以使用其他版本(符号链接或其他魔术)来做一些技巧,但它很可能不起作用 因此,您要么需要提供所需的版本

您可以创建一个符号链接,将libboost-system1.46指向libboost-system1.54

只要您正在使用的功能的接口没有改变,这将起作用,尽管这可能不是一个好主意。它可能只是让你的代码运行和测试,但永远不会适合任何类型的发布软件


您应该尝试使用较新版本的boost重新编译程序。

您需要根据较新版本的库重新编译程序。AFAIK boost库在版本之间不兼容二进制文件,所以很简单。您可以使用其他版本(符号链接或其他魔术)来做一些技巧,但它很可能不起作用

因此,您要么需要提供所需的版本,要么更改需求-重新编译

如果您编写或构建了程序,只需重复整个构建过程,在
make
或编译之前进行所有配置。从技术上讲,只需重新链接就可以了,但是像CMake这样的一些系统会缓存在这一步评估的配置选项,而仅仅是再次调用
make
就不起作用。所以我建议重复整个过程


无论这个过程看起来如何,只要重复一下就足够了。

针对新库重新编译?如何?我使用了程序源代码中给出的脚本,我在Ubuntu 14.04中使用了它。只是猜测一下,你应该做一个
make clean
然后make(即重建程序),然后一切都会好起来。@AdityaKumar我想如果使用
cmake
可能会失败,因为它喜欢缓存
find_包
的结果。如果正确调用
makeclean
则不会清除缓存。这完全取决于所使用的构建系统,到目前为止,这是一个神秘的建议。这只是一个糟糕的建议。你能保证版本是二进制兼容的吗?那么这真是一个可怕的想法,你甚至考虑推荐它都应该被淘汰。我的问题是,我使用的程序调用了在1.46版本下编译的其他程序。我不知道。