# Platform Specific Build Instructions ## Building with GCC When the library is built using GCC it is necessary to link with the pthread library due to how GCC implements `std::thread`. Failing to link to pthread will lead to runtime exceptions (unless you're using libc++), not linker errors. See [issue #67](https://github.com/google/benchmark/issues/67) for more details. You can link to pthread by adding `-pthread` to your linker command. Note, you can also use `-lpthread`, but there are potential issues with ordering of command line parameters if you use that. On QNX, the pthread library is part of libc and usually included automatically (see [`pthread_create()`](https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.lib_ref/topic/p/pthread_create.html)). There's no separate pthread library to link. ## Building with Visual Studio 2015 or 2017 The `shlwapi` library (`-lshlwapi`) is required to support a call to `CPUInfo` which reads the registry. Either add `shlwapi.lib` under `[ Configuration Properties > Linker > Input ]`, or use the following: ``` // Alternatively, can add libraries using linker options. #ifdef _WIN32 #pragma comment ( lib, "Shlwapi.lib" ) #ifdef _DEBUG #pragma comment ( lib, "benchmarkd.lib" ) #else #pragma comment ( lib, "benchmark.lib" ) #endif #endif ``` Can also use the graphical version of CMake: * Open `CMake GUI`. * Under `Where to build the binaries`, same path as source plus `build`. * Under `CMAKE_INSTALL_PREFIX`, same path as source plus `install`. * Click `Configure`, `Generate`, `Open Project`. * If build fails, try deleting entire directory and starting again, or unticking options to build less. ## Building with Intel 2015 Update 1 or Intel System Studio Update 4 See instructions for building with Visual Studio. Once built, right click on the solution and change the build to Intel. ## Building on Solaris If you're running benchmarks on solaris, you'll want the kstat library linked in too (`-lkstat`).