我之前已经安装了boost
sudo apt-get libboost-dev
sudo apt-get libboost-all-dev
我想我得到了boost 1.58
。
然后我需要boost
的最新boost_serialization
,因为我尝试通过从here下载,然后从以下命令安装boost
。
tar --bzip2 -xf boost_1_65_1.tar.bz2
./bootstrap.sh --prefix=/usr/
sudo checkinstall ./b2 install
我检查了以不同方式安装的boost
版本。
第一
std::cout << "Using Boost "
<< BOOST_VERSION / 100000 << "." // major version
<< BOOST_VERSION / 100 % 1000 << "." // minor version
<< BOOST_VERSION % 100 // patch level
<< std::endl;
给出了Using Boost 1.65.1
第二
dpkg -S /usr/include/boost/version.hpp
给出了libboost1.58-dev:amd64: /usr/include/boost/version.hpp
第三
cat /usr/include/boost/version.hpp | grep "BOOST_LIB_VERSION"
显示// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION #define BOOST_LIB_VERSION "1_65_1"
四
dpkg -s libboost-dev | grep 'Version'
显示Version: 1.58.0.1ubuntu1
有什么区别?我是否安装了两个版本或仅1.65
?
我尝试按1.58
删除sudo apt-get autoremove
,但我再次收到相同的信息。
我也试过删除旧的
dpkg -S /usr/include/boost/version.hpp
sudo apt-get autoremove package
它只显示以下信息
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package package
答案 0 :(得分:2)
构建和安装tarball不会更新apt认为安装的内容,因为你使用/ usr作为你的前缀它可能已经覆盖了实际的文件,但apt仍然认为旧的版本已经安装。