Ruchin Amaratunga
Ruchin Amaratunga

Reputation: 133

Using pthread in a MPI program has a Compilation error

I'm trying to run an MPI program that uses pthreads. I am able to compile and run in my local machine but couldn't do that on a server.

This is the command I used to compile.

target1: TARGET=main
target2: TARGET=kmer_finaliser

CC = mpic++
# CPPFLAGS = -pg 
# CPPFLAGS = -lm -g -Wall -pthread
CPPFLAGS = -std=c++11 -pthread

USER_LIBS = -I /home/ruchin/sparsehash-sparsehash-2.0.4/src 

main: main.o extractor.o com.o kmer_dump.o thread_pool.o
    $(CC) $(CPPFLAGS) -o kmer_counter.out main.o extractor.o com.o kmer_dump.o thread_pool.o $(USER_LIBS)

main.o: main.cpp extractor.h com.h kmer_dump.h thread_pool.h
    $(CC) $(CPPFLAGS) -c main.cpp $(USER_LIBS)

kmer_finaliser: kmer_finaliser.o kmer_dump.o
    $(CC) $(CPPFLAGS) -o kmer_finaliser.out kmer_finaliser.o kmer_dump.o $(USER_LIBS)

kmer_finaliser.o: kmer_finaliser.cpp kmer_dump.h
    $(CC) $(CPPFLAGS) -c kmer_finaliser.cpp $(USER_LIBS)

extractor.o: extractor.cpp extractor.h
    $(CC) $(CPPFLAGS) -c extractor.cpp $(USER_LIBS)

com.o: com.cpp com.h
    $(CC) $(CPPFLAGS) -c com.cpp $(USER_LIBS)

kmer_dump.o: kmer_dump.cpp kmer_dump.h
    $(CC) $(CPPFLAGS) -c kmer_dump.cpp $(USER_LIBS)

thread_pool.o: thread_pool.cpp kmer_dump.h
    $(CC) $(CPPFLAGS) -c thread_pool.cpp $(USER_LIBS)

This is the error I get.

/usr/bin/ld: thread_pool.o: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
/lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

Upvotes: 0

Views: 325

Answers (1)

francesco
francesco

Reputation: 7539

According to the man page of g++, you should include also in the compilation the flag -pthread:

-pthread Define additional macros required for using the POSIX threads library. You should use this option consistently for both compilation and linking. This option is supported on GNU/Linux targets, most other Unix derivatives, and also on x86 Cygwin and MinGW targets.

Upvotes: 1

Related Questions