Boost logo

Boost :

Subject: Re: [boost] building a run-time static version
From: Vladimir Prus (vladimir_at_[hidden])
Date: 2009-08-19 02:36:50


Lorenzo Bettini wrote:

> still problems (please read below)

> If I do (thus, using the .a file directly)
>
> g++ regex_use.o $HOME/boost/lib/libboost_regex.a -o regex_use_static
>
> I don't get errors, but the binary still uses dynamic libraries:
>
> ldd regex_use_static
> linux-gate.so.1 => (0xb800e000)
> libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7eff000)
> libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7ed9000)
> libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7ec9000)
> libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d66000)
> /lib/ld-linux.so.2 (0xb800f000)

This is expected. gcc does use shared libraries by default.

>> ./bjam --layout=system threading=single runtime-link=static link=static install
>>
>> (Note that I have omitted --build-dir, since it's not really necessary).
>>
>
> I did, and now get the library installed, but, again, I get:

> /usr/lib/gcc/i486-linux-gnu/4.3.3/libstdc++.a(locale.o): In function
> `std::locale::_Impl::_M_install_cache(std::locale::facet const*,
> unsigned int)':
> (.text._ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj+0x2a):
> undefined reference to `pthread_mutex_lock'

This may suggest that libstdc++ unconditionally uses threading...

 
> g++ -static regex_use.o -I$HOME/boost/include -L$HOME/boost/lib
> -lboost_regex -o regex_use_static
> /home/bettini/boost/lib/libboost_regex.a(static_mutex.o): In function
> `boost::scoped_static_mutex_lock::unlock()':
> static_mutex.cpp:(.text+0x16): undefined reference to `pthread_mutex_unlock'
> /home/bettini/boost/lib/libboost_regex.a(static_mutex.o): In function
> `boost::scoped_static_mutex_lock::lock()':
> ...

... and that causes Boost.Regex to make use of threads as well. Can you
try removing everything again, and rebuild with the additional

        define=BOOST_DISABLE_THREADS=1 --without-thread

options? If that does not help, it means that libstdc++ just needs threads,
and there's no way around that.

- Volodya


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk