CentOS7在Boost升级后损坏
CentOS7 Broken after Boost Upgrade
嗨:我使用了一些静态boost库来链接我正在编写的程序。我使用FindBoost.cmake来检查boost是否正确安装。一切都正常,直到我尝试从Boost 1.53.0更新到1.55.0。我最初安装的Boost是来自的香草安装
yum install boost boost-devel
我试图通过首先从这种人的回购安装来升级到1.55.0
[enetres]
name = ENETRES REPO for CentOS/RHEL $releasever
baseurl = http://repo.enetres.net/
enabled = 0
protect = 0
gpgcheck = 0
它安装了,但没有我需要的东西,所以我退出了。这个过程进行了:
yum install boost-1.55.0
yum erase boost-1.55.0
在安装1.55.0时,我注意到它取代了我的1.53.0安装。
然后,我尝试使用bootstrap和boost中的正常程序进行安装:http://www.boost.org/doc/libs/1_55_0/doc/html/bbv2/installation.html
我在/opt/boost/中安装了它,之后我rm-rf/opt/boost也不起作用。
我认为我已经恢复正常,再次从百胜重新安装了boost 1.53.0,但FindBoost.cmake不再找到boost,,尽管我看到include和library目录的文件路径是正确的。
这是我使用的库的一个示例,我已经确认头文件在/usr/include/boost:中
$ locate libboost_system
/usr/lib64/libboost_system-mt.a
/usr/lib64/libboost_system-mt.so
/usr/lib64/libboost_system-mt.so.1.53.0
/usr/lib64/libboost_system.a
/usr/lib64/libboost_system.so
/usr/lib64/libboost_system.so.1.53.0
当我在-DBoost_DEBUG=ON的情况下运行cmake时,lib和include目录的所有路径看起来都是正确的。
有趣的调试输出:
$ ./build.sh -DBOOST_LIBRARYDIR=/usr/lib64 -DBoost_DEBUG=ON
-- [ /usr/share/cmake/Modules/FindBoost.cmake:481 ]
-- [ /usr/share/cmake/Modules/FindBoost.cmake:483 ] Boost_USE_MULTITHREADED = TRUE
-- [ /usr/share/cmake/Modules/FindBoost.cmake:485 ] Boost_USE_STATIC_LIBS = ON
-- [ /usr/share/cmake/Modules/FindBoost.cmake:487 ] Boost_USE_STATIC_RUNTIME =
-- [ /usr/share/cmake/Modules/FindBoost.cmake:489 ] Boost_ADDITIONAL_VERSIONS =
-- [ /usr/share/cmake/Modules/FindBoost.cmake:491 ] Boost_NO_SYSTEM_PATHS =
-- [ /usr/share/cmake/Modules/FindBoost.cmake:543 ] Declared as CMake or Environmental Variables:
-- [ /usr/share/cmake/Modules/FindBoost.cmake:545 ] BOOST_ROOT =
-- [ /usr/share/cmake/Modules/FindBoost.cmake:547 ] BOOST_INCLUDEDIR =
-- [ /usr/share/cmake/Modules/FindBoost.cmake:549 ] BOOST_LIBRARYDIR = /usr/lib64
...clip...
-- [ /usr/share/cmake/Modules/FindBoost.cmake:620 ] Include debugging info:
-- [ /usr/share/cmake/Modules/FindBoost.cmake:622 ] _boost_INCLUDE_SEARCH_DIRS = PATHS;C:/boost/include;C:/boost;/sw/local/include
-- [ /usr/share/cmake/Modules/FindBoost.cmake:624 ] _boost_PATH_SUFFIXES = ..clip...boost-1_53_0;boost_1_53_0;boost/boost-1_53_0;boost/boost_1_53_0;boost-1_53;boost_1_53;boost/boost-1_53;boost/boost_1_53;...clip...
-- [ /usr/share/cmake/Modules/FindBoost.cmake:644 ] location of version.hpp: /usr/include/boost/version.hpp
-- [ /usr/share/cmake/Modules/FindBoost.cmake:668 ] version.hpp reveals boost 1.53.0
-- [ /usr/share/cmake/Modules/FindBoost.cmake:744 ] guessed _boost_COMPILER = -gcc53
-- [ /usr/share/cmake/Modules/FindBoost.cmake:754 ] _boost_MULTITHREADED = -mt
-- [ /usr/share/cmake/Modules/FindBoost.cmake:797 ] _boost_RELEASE_ABI_TAG = -
-- [ /usr/share/cmake/Modules/FindBoost.cmake:799 ] _boost_DEBUG_ABI_TAG = -d
-- [ /usr/share/cmake/Modules/FindBoost.cmake:847 ] _boost_LIBRARY_SEARCH_DIRS = **/usr/lib64**;/usr/include/lib;/usr/include/../lib;/usr/include/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib
-- [ /usr/share/cmake/Modules/FindBoost.cmake:957 ] Searching for SYSTEM_LIBRARY_RELEASE: boost_system-gcc53-mt-1_53;boost_system-gcc53-mt;boost_system-mt-1_53;**boost_system-mt**;**boost_system**
-- [ /usr/share/cmake/Modules/FindBoost.cmake:993 ] Searching for SYSTEM_LIBRARY_DEBUG: boost_system-gcc53-mt-d-1_53;boost_system-gcc53-mt-d;boost_system-mt-d-1_53;boost_system-mt-d;boost_system-mt;boost_system
-- [ /usr/share/cmake/Modules/FindBoost.cmake:957 ] Searching for FILESYSTEM_LIBRARY_RELEASE: boost_filesystem-gcc53-mt-1_53;boost_filesystem-gcc53-mt;boost_filesystem-mt-1_53;**boost_filesystem-mt;boost_filesystem**
-- [ /usr/share/cmake/Modules/FindBoost.cmake:993 ] Searching for FILESYSTEM_LIBRARY_DEBUG: boost_filesystem-gcc53-mt-d-1_53;boost_filesystem-gcc53-mt-d;boost_filesystem-mt-d-1_53;boost_filesystem-mt-d;boost_filesystem-mt;boost_filesystem
-- [ /usr/share/cmake/Modules/FindBoost.cmake:1044 ] Boost_FOUND = 1
CMake Error at /usr/share/cmake/Modules/FindBoost.cmake:1138 (message):
Unable to find the requested Boost libraries.
Boost version: 1.53.0
Boost include path: /usr/include
Could not find the following static Boost libraries:
boost_system
boost_filesystem
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of
Boost.
正如您所看到的,我正在设置BOOST_IBRARYDIR=/usr/lib64。
非常感谢您的帮助。
解决方案是有意义的,但我很困惑:
yum install boost-static
好的,是的,我使用Boost_use_STATIC_LIBS=ON,这样线索就指向了解决方案,但我swear"yum-install-Boost-devel"也用于安装静态头。。。
- 理解boost::asio-async_read在无需读取内容时的行为
- 为什么会发生堆损坏
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- cmake如何在fedora工作站中找到boost静态库包
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- Boost Graph Library,修复节点大小
- 什么是"#include <boost/functional/hash.hpp> "?
- 基于boost的程序的静态链接——zlib问题
- C++:如何在CLion IDE中安装Boost
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 有没有办法修复因未正确关闭 boost::archive::binary_oarchive 而损坏的文件?
- Boost 的数据驱动测试的联接运算符"+"损坏了第一列
- CentOS7在Boost升级后损坏
- Boost asio收到损坏的消息
- boost::线程示例和堆损坏消息
- boost::async_write导致数据损坏
- Boost::spirit::hold_any内存损坏
- 使用Boost 1.55线程和文件系统并发内存损坏(Visual Studio 2013)