Red Hat Bugzilla – Bug 250802
Missing libboost_thread.so symlink
Last modified: 2013-08-09 01:48:15 EDT
Description of problem:
I can no longer build openvrml since boost was upgraded in devel. There appears
to be some problem using libboost_thread.
Version-Release number of selected component (if applicable):
The following configure test is failing:
BOOST_LIB_SUFFIX is empty.
Unfortunately, I don't know how to see config.log from koji builds (or if that's
It looks like the libboost-thread.so symlink is missing.
er, libboost_thread.so, that is.
It looks like libboost_thread.so is renamed to
libboost_thread-mt.so (perhaps due to multithread support??)
like libqt.so -> libqt-mt.so, so perhaps you have to specify
$BOOST_LIB_SUFFIX as -mt.
A example is:
That would work for openvrml; since, fortunately, openvrml provides a mechansim
to apply a suffix to the library name. However, it should not be necessary.
The presence or absence of "-mt" in the symlink name really has nothing to do
with the presence of thread support (for the purposes of the Fedora package). It
seems every shared library *except* libboost_thread has two symlinks in the
boost-devel package: one with "-mt" and one without. These symlinks point to the
same binary--which was built with threading support.
So the absence of a libboost_thread.so symlink is both an aberration within the
package as well as a change from the previous boost release package.
It looks like I was mistaken; the non-"-mt" version is not a symlink. Rather, it
looks like versions of the libraries both with and without threading support are
Is this deliberate? It seems inappropriate. It is certainly a departure from the
boost 1.33.1 package.
Created attachment 161145 [details]
Patch to build only the multithreaded variant of the boost libraries
It's not yet clear to me if building the non-thread-safe variant of the
libraries is deliberate and perceived as desirable. But assuming it's not,
here's a patch that builds only the thread-safe variant. Additionally, this
patch omits the -mt suffix from the library names.
And just for fun, it applies _smp_mflags, too.
There has been a deliberate change of behavior with the boost-1.34.1.x packages,
that is different than the previous boost packages.
If you need a boost library linked into a multi-threaded app (ie, if the compile
line uses -pthread), you have to use the -mt versions. Thus, you should set
BOOST_LIB_SUFFIX, as above.
For the boost threads lib, there is no "single thread" variant, so there is no
libboost_thread.so at all, only libboost_thread-mt.so.