Hi Could someone explain what is the difference between compiling a program with -lpthread or -pthread ? I needed to use pthread_atfork() function in a c program. Only when compiling with -pthread that function is found in the library.
thanks Bogdan
Hi Could someone explain what is the difference between compiling a program with -lpthread or -pthread ? I needed to use pthread_atfork() function in a c program. Only when compiling with -pthread that function is found in the library.
thanks Bogdan
When using -lpthread, did you remember to put the library specification after the object files on the command line?
In GCC, the -pthread (aka -pthreads) option manages both the compiler preprocessor /and/ linker to enable compilation with Posix threads. The preprocessor will define/enable/use Posix threads versions of some macros (or perform conditional compilation to enable Posix threads logic), and the linker will specifically link the resultant object against libpthread
However, -lpthread simply tells the linker to attempt to resolve any external references against the libpthread library, in the same way that -lm tells the linker to attempt to resolve any external references against the libm library. For -lpthread, your code might not contain external references to libpthread, even if you wrote Posix thread code, because the critical macros haven't been switched on.
Have something to add? Share your thoughts — no account required.
Ask the community — no account required