在Linux Mint上使用多个版本的libboost
Using multiple versions of libboost on Linux Mint
我正在Linux Mint上重新编译一些使用libboost的C++代码。 在从 Mint 18 升级到 Mint 19.3 之前,代码运行良好。 从那以后,我可以获取要编译的代码,但在执行过程中它失败了,并因一个或多个调用 boost::filesytem::create_directories 生成的错误而失败
搜索'网络,似乎问题可能是由于库版本不兼容,果然,在安装了 1.65 时,似乎有 1.58 的库在此文件夹中运行/usr/lib/x86_64-linux-gnu (或类似的东西(。
当我尝试像这样的"网络解决方案"时 sudo rm -f/usr/lib/x86_64-linux-gnu/libboost_* (然后重新安装( 或 sudo rm -f/usr/lib/x86_64-linux-gnu/libboost_*.so.1.5.8.0
没有任何变化(即文件似乎保留和执行错误(。
当我重新运行之前编译代码的副本时,代码不会失败。
任何人都可以建议我如何解决这个问题吗? 我正在编译的代码很大,不是我自己的代码,所以我不知道从哪里开始更改函数调用。 事实上,我不认为这是问题所在。 我认为我需要知道的是如何清除旧安装的残余和/或将所有内容重新指向最新版本。
FWIW,我在这里尝试过建议 卸载加速并安装另一个版本 它似乎并没有让我前进。
(代表问题作者发布解决方案,以便将答案移动到答案空间(。
这是通过不删除系统默认版本而是在不同位置安装其他版本,然后优先使用 cmake 的 EXT_HINT 标志选择它们来解决的。
提升站点建议(通过 1.60 的发行说明(进行了与create_directories返回值相关的修复。无论如何,我能够通过在编译期间指向版本 1.58 来让代码"按编写"工作,而不是指向版本 1.60、1.65 或 1.72。
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 在运行时读取 libstdc++ 版本
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- Vulkan SDK 版本 1.1.85.0 在 Kubuntu 18.10 上链接
- 如何正确实现与基类不同的版本?
- 从预处理器获取 Windows 版本(C++ Win32)
- 表达式 SFINAE:如何根据类型是否包含具有一个或多个参数的函数来选择模板版本
- 如何在C++中将 Python 字符串转换为其转义版本?
- 在Linux Mint上使用多个版本的libboost