How to install the C++ Boost Libraries on Windows

Boost is a set of high-quality libraries that speed up C++ development. They are included in most linux distributions and some of them are already part of the C++ Standard Library. In the Windows environment, you have to install them in order to take advantage of them.

If you are using Microsoft Visual Studio, you can avoid the following steps by downloading a binary version from and skip to the Testing section in this document.

Before we start, you may want to read my previous article on installing a C++ compiler on Windows.



Download and unzip the boost source code from I will unzip it to C:optc-libs, but you can use the one you prefer. After you unzip, open a command line and go to your selected folder:

cd C:optc-libsboost_1_51_0

Start bootstrap.bat and specify your toolset. Toolsets supported by this script are: borland, como, gcc, gcc-nocygwin, intel-win32, metrowerks, mingw, msvc, vc7, vc8, vc9, vc10, vc11. In my case I will use the mingw toolset:

bootstrap.bat mingw

All required files for compilation should be ready. Now you have to define a installation directory and specify a toolset. Toolsets here are a little bit different from the ones we used before:

  • acc: Hewlett Packard, Only very recent versions are known to work well with Boost
  • borland: borland
  • como: Comeau Computing, Using this toolset may require configuring another toolset to act as its backend
  • darwin: Apple, Apple’s version of the GCC toolchain with support for Darwin and MacOS X features such as frameworks.
  • gcc: The Gnu Project, including Cygwin and MinGW
  • hp_cxx: Hewlett Packard, Targeted at the Tru64 operating system.
  • intel: Intel
  • msvc: Microsoft
  • sun: Sun, Only very recent versions are known to work well with Boost.
  • vacpp: IBM, The VisualAge C++ compiler.

Since I’m using MinGW I will use gcc.

b2 install --prefix=c:/installation/path toolset=gcc

At this time you can go get a cup of coffee. Or maybe two.

When compilation ends, go to your selected installation path (watch out!, this is not the folder where you originally unzipped the source code). You will find two folders: include and lib. Both folders should contain files. That means you are done and ready for the testing phase.

If any of the afore mentioned folders is empty then we have problems. Common problems arise due to selecting the wrong toolset for compiling, so if your lib folder is empty try choosing a different toolset. If error persist, take a look at the compilation output. Errors must be shown there, specially at the last lines of the output.



From your IDE create a file named main.cpp and copy the following text onto it:

#include <boost/regex.hpp>

int main()
    std::string line;
    boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

    while (std::cin)
        std::getline(std::cin, line);
        boost::smatch matches;
        if (boost::regex_match(line, matches, pat))
            std::cout << matches[2] << std::endl;


It’s time to compile (and link)

In order to let your compiler know where to look for the headers and libraries, you have to follow the next steps. You can usually accomplish them by right clicking on your project and selecting Properties or Options.

Add the following path to your includes list:


Add the following path to your additional library directories list



Important: if you are using Netbeans, you should only type /installation/path/lib (you have to omit the C:). For a very strange reason, Netbeans adds a forward slash at the beggining of the parameter /L used to compile (only when it begins with C:) resulting in an unknown path. This might be fixed in later versions.


If you are using a gnu compiler (that is Cygwin or MinGW), you must also add the specific library to the linker. If you are using Microsoft Visual Studio you can skip this step because it includes the so called auto-linking support. But, in my case, I have to add the following library to my libraries list so the linker performs without complaints:


This file name is composed by:

  • The standard lib prefix. DLL’s do not use it.
  • The library name boost_regex.
  • The toolset used to compile it, in my case mgw47, that is MinGW version 4.7.
  • The threading tag mt, which indicates if the library accepts multithreading.
  • The ABI tag, that can be: d for debugging, s for static linkage or g, y, p which are not covered in this text.
  • The version tag.
  • The extension, which can be .lib or .a.


You are ready. Build the program.


Time to execute it

The program you just compiled (and linked) can parse a text file looking for a line starting with the text “Subject:” in it. So to test it, copy and paste the following text into an empty text file and name it test.txt (save it in the folder where your .exe file resides):

To: George Shmidlap
From: Rita Marlowe
Subject: Will Success Spoil Rock Hunter?
See subject.

Now, from a command prompt type:

yourprogram.exe < test.txt

If everything goes right you should see the following text:

Will Success Spoil Rock Hunter?



At this point, boost should be ready on your Windows computer. I suggest you read about this tremendous library since it can help you make your life a lot easier.

12 Replies to “How to install the C++ Boost Libraries on Windows”

    1. Windows usually looks for dll’s in the current executable directory and in the system32 folder. Drop your file in any of those directories.

      That should make the trick.

  1. Can you elaborate a bit more on how to add paths to the headers and libraries? I don’t use an IDE. I usually use MinGW to compile in command line and I have added the paths to my include and lib folder in the PATH via system environmental variables.

    1. I’m not really sure I understand your question, however during compile time you can add include directories by using the -I flag (uppercase i) and library directories by using the -L flag. For example, if you have some .h files in a directory named “include” you would type:

      gcc -Iinclude myfile.c

      Careful: this was a capital i.

      For libraries, there are more options. The following line will dynamically link a library named “test” to your file. “test” is automatically mapped to a file named, but you don’t have to write the full name. I’m not really sure how the mapping is in Windows, but I think it should be to something like libtest.dll.

      gcc -ltest myfile.c

      Careful, this was a lower case L.

      The following line will look for libraries in a directory named “libdir”:

      gcc -Llibdir myfile.c

      You can always combine the previous options:

      gcc -Iinclude -Llibdir -ltest myfile.c

      All directory paths are relative to the directory where you are calling gcc from.

      Hope that solved your question.

  2. I’m using Microsoft’s command-line compiler (CL — without Visual Studio.) Not sure which compiler to build Boost for. I went with MSVC but I’m almost certain that’s incorrect. Any advice? I also have Visual Studio 10 installed.

    1. I would install the binary version on Windows. The installer allows you to download different versions like the debugging, static or dynamic linking ones.

      If you really want to compile it, let me know and I will help you find out what the correct options for your compiler are.


  3. Hi!
    i tried to follow your guideline.
    But at step 2, choose where to install the library. It’s stopped with 2 line:

    C:boost_1_55_0>b2 install –prefix=c:/MinGW toolset=gcc
    link.jam: No such file or directory
    …found 2 targets…

    Any advice?

    p.s i tried install it with default configuration. It’s OK, but i just wanna know what i missed when i was trying to install it to an other directory.

  4. (Long since 2014, but may clarify for future readers.) It is double hyphen (–) on prefix and other ‘options’ (eg –prefix=, –build-type=, and so forth). No hyphen on ‘functions’ eg toolset=. And single hyphen on others (eg -j 4) for usage of 4 processor cores. Take note that some tutorials have reversed the and / within their instructions (eg for Visual studio and Eclipse, et al that don’t use command prompt). May need to use carets (for ‘more’ on some shells) if typing over several lines, though my paths were purposefully short. Any spaces within paths or next to ‘=’, may cause problems, and may solve some by placing in ” “, as per the posting before mine. It is also case sensitive.

    Thanks Andres, your guidance was extremely helpful and well structured. Truly appreciated. (Didn’t you have another 3 libraries to be added to the Linker section – system, thread, chrono, along with regex?)

  5. ( bootstrap.bat mingw ) Didn’t work for me for some reason. So here is what I did.

    Moved my Path C:\CodeBlocks\MinGW\bin to the top of environment variable stack.

    cd C:\boost_1_63_0\tools\build\src\engine in admin cmd. run build.bat gcc.

    Copied both b2.exe and bjam.exe from bin.ntx86 folder in the same directory to C:\boost_1_63_0. cd C:\boost_1_63_0 than finally ( b2 install –prefix=c:/Boost/ toolset=gcc )

    It compiled and after some coffee, I see both include and lib folders in c:/Boost directory. I’m still not sure if it worked. Maybe someone can confirm this.

Leave a Reply