In various multi threaded C and C++ projects I've seen the
-pthread flag applied to both the compiling and linking stage while others don't use it at all and just pass
-lpthread to the linking stage.
Is there any danger not compiling and linking with the
-pthread flag - i.e. what does
-pthread actually do ? I'm primarily interested in Linux platforms.
gcc -dumpspecs | grep pthread
and look for anything that starts with
On my computer, this causes files to be compiled with
-D_REENTRANT, and linked with
-lpthread. On other platforms, this could differ. Use
-pthread for most portability.
_REENTRANT, on GNU libc, changes the way some libc headers work. As a specific example, it makes
errno call a function returning a thread-local location.
-pthread Adds support for multithreading with the pthreads library. This option sets flags for both the preprocessor and linker.