g++ -lpthread -g -Wall -O3 -D_LINUX_ -DMMAP_POPULATE -fstrict-aliasing-Wstrict-aliasing -D__x86_64__ -c kmeans.cpp -o kmeans.o-I../../include
g++ -lpthread -g -Wall -O3 -D_LINUX_ -DMMAP_POPULATE -fstrict-aliasing-Wstrict-aliasing -D__x86_64__ -o kmeans kmeans.o -lpthread -lrt-L../../lib -lphoenix
../../lib/libphoenix.a(thread_pool.o):In function `semaphore::wait()':
/home/xiuwenyi/phoenix++-1.0/src/../include/synch.h:177:undefined reference to `sem_wait'
../../lib/libphoenix.a(thread_pool.o):In function `semaphore::post()':
/home/xiuwenyi/phoenix++-1.0/src/../include/synch.h:168:undefined reference to `sem_post'
/home/xiuwenyi/phoenix++-1.0/src/../include/synch.h:168:undefined reference to `sem_post'
../../lib/libphoenix.a(thread_pool.o):In function `semaphore':
/home/xiuwenyi/phoenix++-1.0/src/../include/synch.h:159:undefined reference to `sem_init'
/home/xiuwenyi/phoenix++-1.0/src/../include/synch.h:159:undefined reference to `sem_init'
../../lib/libphoenix.a(thread_pool.o):In function `thread_pool':
/home/xiuwenyi/phoenix++-1.0/src/thread_pool.cpp:61:undefined reference to `pthread_create'
/home/xiuwenyi/phoenix++-1.0/src/thread_pool.cpp:61:undefined reference to `pthread_create'
../../lib/libphoenix.a(thread_pool.o):In function `semaphore::post()':
/home/xiuwenyi/phoenix++-1.0/src/../include/synch.h:168:undefined reference to `sem_post'
../../lib/libphoenix.a(thread_pool.o):In function `semaphore::wait()':
/home/xiuwenyi/phoenix++-1.0/src/../include/synch.h:177:undefined reference to `sem_wait'
../../lib/libphoenix.a(thread_pool.o):In function `semaphore::post()':
/home/xiuwenyi/phoenix++-1.0/src/../include/synch.h:168:undefined reference to `sem_post'
../../lib/libphoenix.a(thread_pool.o):In function `semaphore::wait()':
/home/xiuwenyi/phoenix++-1.0/src/../include/synch.h:177:undefined reference to `sem_wait'
collect2:ld返回1
make:*** [kmeans]错误1
若有以上这个错误,进入kmeans目录,修改Makefile,将-pthread加进去,如下
kmeans: $(KMEANS_OBJS) $(LIB_DEP)
$(CXX) -pthread $(CFLAGS) -o $@ $(KMEANS_OBJS) $(LIBS)
%.o: %.cpp
$(CXX) -pthread $(CFLAGS) -c $< -o $@ -I$(HOME)/$(INC_DIR)
在终端里进入phoenix文件夹,make