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.
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. 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? 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. 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. Then there are the libboost-* variations... 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. OK, but how does that work with MinGW's ld.exe linker on Windows. Some of the libraries are available only in the static version, but the only static libraries are the libboost-* variants. 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. Merrill