C++ Boost thread library pulls in the whole development environment
-
14-11-2019 - |
Question
I am using boost-thread in my application. When I deploy this application on a client machine (running Ubuntu 11.10), I need to make sure that libboost_thread.so is available on the machine. However, when I run "apt-get install libboost-thread1.46," it seems to pull in the whole development enviornment (libgcc, libbost1.46-dev, etc.). This machine needs just the runtime environment, not the development environment. I am wondering if there is a better way to handle this.
Solution
No such package exception: The package "libboost-thread1.46" does not exist on Ubuntu, is treated by apt-get
as a regular expression, and the development package also matches the expression. The two candidate packages are named libboost-thread1.46-dev
and libboost-thread1.46.1, where the latter is the package you want. It depends only on three libraries (libgcc, libc, libstdc++), all of which you need to deploy anyway because your program and libboost-thread link against them.
So, deploy by installing libboost-thread1.46.1
and everything should be fine.
OTHER TIPS
You can build individual requirements yourself by download the boost tar and using the bjam
build tool.
You could link statically against boost.
You can also use bcp and copy the necessary files into your own source tree. I personally have the headers installed on my system and just added the source files to my project (once.cpp
, thread.cpp
, timeconv.inl
, tss_null.cpp
on Linux).