Boost logo

Boost Users :

From: Rene Rivera (grafik.list_at_[hidden])
Date: 2005-11-14 11:26:14


Merrill Cornish wrote:
> When I built Boost 1.33.0 for MinGW, I just specified the toolset.
> As a result I got 28! variants on the set of Boost libraries.
>
>> From the various file names, I can figure out most of the variants:
>>
> d = debug mt = multi-threaded s = static but there are other variants
> which aren't as obvious.

It's all explained in
<http://www.boost.org/more/getting_started.html#Results>.

> For example, what's the distinction among
>
> boost-<libname>-mgw-1_33.dll
> boost-<libname>-mgw-1_33.lib
> boost-<libname>-mgw.lib
>
> The two .lib files have the same sizes and timestamps, so they appear
> to be the same file with and without the Boost version in the name.

Yes.

> Is the idea that if you use the library WITHOUT the version number
> suffix, then you can upgrade to a new version without having to
> modify your make file?

Yes. Assuming all you need to do is recompile. We don't assume binary
compatibility between version.

> OK, what's the distinction between the .dll and .lib? I understand
> that they linker needs one set of information about library function
> names and entry points while the actual function bodies are needed at
> run time. However, I thought all of that information is in the .dll
> file.

Sometimes. It's possible to not provide that information. The .lib is a
convenience most people provide.

> On the other hand, the .dll version is so much bigger than the
> .lib that there must be more than an entry point table involved.

Yea, that would be the code itself, plus debug symbols, etc.

> Then there are the libboost-* variations...

As in the docs i point out above, those are static link (vs. dynamic
link) versions.

> I understand that in the Unix world, the -L linker option specifies
> the library directory while the -l<name> option tells the Unix linker
> to look for the lib<name>.a file.

It actually looks for lib<name>.so then lib<name>.a, assuming your
system supports dynamic linking.

> OK, but how does that work with
> MinGW's ld.exe linker on Windows.

Same, except it searches for <name>.lib, <name>.dll, and lib<name>.lib
(and some other variations on that that I don't remember right now).

> Some of the libraries are available only in the static version, but
> the only static libraries are the libboost-* variants.

That's what it means to have only static versions.

> There is a statement somewhere in the Boost library documention that
> the selection of libraries should be automatic in Windows because of
> pragma's in the libraries. However, I haven't been able to find
> where MinGW supports that pragma.

I don't think MinGW (aka GCC) has the pragma, and most likely that
functionality is not supported in this case.

-- 
-- Grafik - Don't Assume Anything
-- Redshift Software, Inc. - http://redshift-software.com
-- rrivera/acm.org - grafik/redshift-software.com
-- 102708583/icq - grafikrobot/aim - Grafik/jabber.org

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net