Under ubuntu, How to purge default boost-v1.58 then switch to the built version without any damages?

Under ubuntu 16,04 I have*built latest boost 1.65**.1 like this*: |./bootstrap.sh --prefix=/usr/local ./b2 sudo ./b2 install sudo ldconfig ***then when building something against boost,I got the**se errors:* /usr/local/include/boost/serialization/access.hpp: In instantiation of ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive; T = std::array<std::__cxx11::basic_string<char>, 10ul>]’: /usr/local/include/boost/serialization/serialization.hpp:68:22: required from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive; T = std::array<std::__cxx11::basic_string<char>, 10ul>]’ /usr/local/include/boost/serialization/serialization.hpp:126:14: required from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive; T = std::array<std::__cxx11::basic_string<char>, 10ul>]’ /usr/local/include/boost/archive/detail/oserializer.hpp:150:40: required from ‘void boost::archive::detail::oserializer<Archive, T>::save_object_data(boost::archive::detail::basic_oarchive&, const void*) const [with Archive = boost::archive::text_oarchive; T = std::array<std::__cxx11::basic_string<char>, 10ul>]’ /usr/local/include/boost/archive/detail/oserializer.hpp:103:1: required from ‘class boost::archive::detail::oserializer<boost::archive::text_oarchive, std::array<std::__cxx11::basic_string<char>, 10ul> >’ /usr/local/include/boost/archive/detail/oserializer.hpp:255:13: required from ‘static void boost::archive::detail::save_non_pointer_type<Archive>::save_standard::invoke(Archive&, const T&) [with T = std::array<std::__cxx11::basic_string<char>, 10ul>; Archive = boost::archive::text_oarchive]’ /usr/local/include/boost/archive/detail/oserializer.hpp:310:22: required from ‘static void boost::archive::detail::save_non_pointer_type<Archive>::invoke(Archive&, const T&) [with T = std::array<std::__cxx11::basic_string<char>, 10ul>; Archive = boost::archive::text_oarchive]’ /usr/local/include/boost/archive/detail/oserializer.hpp:534:18: required from ‘void boost::archive::save(Archive&, T&) [with Archive = boost::archive::text_oarchive; T = const std::array<std::__cxx11::basic_string<char>, 10ul>]’ /usr/local/include/boost/archive/detail/common_oarchive.hpp:70:22: required from ‘void boost::archive::detail::common_oarchive<Archive>::save_override(T&) [with T = const std::array<std::__cxx11::basic_string<char>, 10ul>; Archive = boost::archive::text_oarchive]’ /usr/local/include/boost/archive/basic_text_oarchive.hpp:83:9: required from ‘void boost::archive::basic_text_oarchive<Archive>::save_override(T&) [with T = const std::array<std::__cxx11::basic_string<char>, 10ul>; Archive = boost::archive::text_oarchive]’ /usr/local/include/boost/archive/detail/interface_oarchive.hpp:70:9: required from ‘Archive& boost::archive::detail::interface_oarchive<Archive>::operator<<(const T&) [with T = std::array<std::__cxx11::basic_string<char>, 10ul>; Archive = boost::archive::text_oarchive]’ examples/user_code/openpose_recognition.cpp:867:89: required from here /usr/local/include/boost/serialization/access.hpp:116:9: error: ‘struct std::array<std::__cxx11::basic_string<char>, 10ul>’ has no member named ‘serialize’ t.serialize(ar, file_version); ^ compilation terminated due to -Wfatal-errors. Makefile:478: die Regel für Ziel „.build_release/examples/user_code/openpose_recognition.o“ scheiterte make: *** [.build_release/examples/user_code/openpose_recognition.o] Fehler 1 make: *** Auf noch nicht beendete Prozesse wird gewartet … | |*I think ubuntu is still use default boost that installed by apt-get,so I tried to pur**ge it * sudo apt-get purge libboost1.58-dev| *the output asks me to remove a lot of stuffs **that depend on libboost1.58-dev **like these:* Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt: docutils-common fltk1.3-doc fluid gazebo7 gazebo7-common gazebo7-plugin-base gir1.2-gtk-2.0 libapr1 libapr1-dev libaprutil1 libaprutil1-dev libarmadillo6 libassimp-dev libassimp3v5 libboost-atomic1.58.0 libboost-chrono1.58.0 libboost-context1.58.0 libboost-coroutine1.58.0 libboost-graph-parallel1.58.0 libboost-graph1.58.0 libboost-locale1.58.0 libboost-log1.58.0 libboost-math1.58.0 libboost-mpi-python1.58.0 libboost-mpi1.58.0 libboost-python1.58.0 libboost-random1.58.0 libboost-regex1.58.0 libboost-signals1.58.0 libboost-test1.58.0 libboost-thread1.58.0 libboost-timer1.58.0 libboost-tools-dev libboost-wave1.58.0 libboost1.58-tools-dev libbullet-dev libbulletcollision2.83.6 libbulletdynamics2.83.6 libbulletsoftbody2.83.6 libbz2-dev libcollada-dom2.4-dp-dev libcollada-dom2.4-dp0 libconsole-bridge-dev libconsole-bridge0.2v5 libcurl4-openssl-dev libdap-dev libdap17v5 libdapclient6v5 libdapserver7v5 libepsilon1 libflann-dev libflann1.8 libfltk-cairo1.3 libfltk-forms1.3 libfltk-images1.3 libfltk1.3-dev libfreeimage-dev libfreeimage3 libfreexl1 libgazebo7 libgdal-dev libgdal1i libgeos-3.5.0 libgeos-c1v5 libgeos-dev libgl2ps-dev libgtest-dev libgtk2.0-dev libgts-0.7-5 libgts-bin libgts-dev libhdf4-0-alt libhdf4-alt-dev libhdf5-mpi-dev libignition-math2 libignition-math2-dev libinput-dev libjs-jquery-ui libjsoncpp-dev libjxr0 libkmlbase1 libkmldom1 libkmlengine1 libldap2-dev liblinearmath2.83.6 liblog4cxx-dev liblog4cxx10-dev liblog4cxx10v5 liblz4-dev libminizip1 libnetcdf-c++4 libnetcdf-cxx-legacy-dev libnetcdf-dev libnetcdf11 libogdi3.2 libogre-1.9.0v5 libopenni-dev libopenni-sensor-pointclouds0 libopenni0 ....... ,and it may cause a lot of damage if continuing,so the question is |*How to purge default boost-v1.58 then switch to the built version without any damages?*|

On 6/11/2017 04:51, Alex Luya wrote:
Under ubuntu 16,04 I have built latest boost 1.65.1 like this:
./bootstrap.sh --prefix=/usr/local ./b2 sudo ./b2 install sudo ldconfig
then when building something against boost,I got these errors:
/usr/local/include/boost/serialization/access.hpp: In instantiation of ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive; T = std::array<std::__cxx11::basic_string<char>, 10ul>]’: [...] /usr/local/include/boost/archive/basic_text_oarchive.hpp:83:9: required from ‘void boost::archive::basic_text_oarchive<Archive>::save_override(T&) [with T = const std::array<std::__cxx11::basic_string<char>, 10ul>; Archive = boost::archive::text_oarchive]’ /usr/local/include/boost/archive/detail/interface_oarchive.hpp:70:9: required from ‘Archive& boost::archive::detail::interface_oarchive<Archive>::operator<<(const T&) [with T = std::array<std::__cxx11::basic_string<char>, 10ul>; Archive = boost::archive::text_oarchive]’ examples/user_code/openpose_recognition.cpp:867:89: required from here /usr/local/include/boost/serialization/access.hpp:116:9: error: ‘struct std::array<std::__cxx11::basic_string<char>, 10ul>’ has no member named ‘serialize’ t.serialize(ar, file_version); ^ compilation terminated due to -Wfatal-errors. Makefile:478: die Regel für Ziel „.build_release/examples/user_code/openpose_recognition.o“ scheiterte make: *** [.build_release/examples/user_code/openpose_recognition.o] Fehler 1 make: *** Auf noch nicht beendete Prozesse wird gewartet …
I think ubuntu is still use default boost that installed by apt-get,
That is not your problem, since you can see in the output that it is using Boost from /usr/local/include, not /usr/include (which is where the system Boost is stored). Having said that, you may need to double-check that your library path also uses /usr/local/lib before /usr/lib otherwise you may experience other problems later on. Another thing to verify is whether you are compiling your application with C++11 or higher options (which the compiler output suggests is the case). If so, you should specify the same options when building Boost. Otherwise, look closely at examples/user_code/openpose_recognition.cpp:867 and see if the code is correct.
so I tried to purge it
sudo apt-get purge libboost1.58-dev
That is never a good idea. You can't remove the system Boost libraries without removing or rebuilding every other system package that depends on it, which will most likely break your system.
How to purge default boost-v1.58 then switch to the built version without any damages? You can't.

On Monday, November 6, 2017 6:09:59 PM CST Gavin Lambert via Boost-users wrote:
On 6/11/2017 04:51, Alex Luya wrote:
so I tried to purge it
sudo apt-get purge libboost1.58-dev
That is never a good idea. You can't remove the system Boost libraries without removing or rebuilding every other system package that depends on it, which will most likely break your system.
What Alex is doing is fine. You CAN safely remove the DEVELOPMENT libraries -- which is what Alex would (partly) accomplish by "apt-get purge libboost1.58-dev". Alex: you likely have other remaining boost development libraries -- each library that comes with a .so file will have a corresponding -dev package. You can see what remains on your system with a command such as: dpkg --list|grep boost.*dev You can purge all of these. -Steve
participants (3)
-
Alex Luya
-
Gavin Lambert
-
Steve Robbins