做线程程序时,编译出现
undefined reference to `pthread_create'的错误。
可是makefile 里面明明已经加入了-lpthread的选项。不知道怎么回事,莫非是找不到库的路径,不
应该啊!线程库的路径是默认的啊,不行加入了pthread的库路径,还是不行网上找半天无果!
最后发现是makefile链接的时候 把 *.o 放在了-lpthread之后了。把 *.o 放在链接库的前边就对了。当然需要在文件中添加#include <pthread.h>
GCC = gcc
CFLAGS = -Wall
OBJECTS = threadpool.o threadpooltest.o
APP_NAME = threadpooltest
.PHONY: all, clean
${APP_NAME}: ${OBJECTS}
$(GCC) $(OBJECTS) $(CFLAGS) $(LIBS) -o ${APP_NAME} //把$(OBJECTS)放在$(LIBS)之前
rm -rf *.o
%.o: %.c
${GCC} ${DEFS} ${CFLAGS} -c -o $@ $< -g
all: ${APP_NAME}
clean:
rm -rf *.o ${APP_NAME}
undefined reference to `pthread_create'的错误。
可是makefile 里面明明已经加入了-lpthread的选项。不知道怎么回事,莫非是找不到库的路径,不
应该啊!线程库的路径是默认的啊,不行加入了pthread的库路径,还是不行网上找半天无果!
最后发现是makefile链接的时候 把 *.o 放在了-lpthread之后了。把 *.o 放在链接库的前边就对了。当然需要在文件中添加#include <pthread.h>
GCC = gcc
CFLAGS = -Wall
OBJECTS = threadpool.o threadpooltest.o
DEFS += -D_GNU_SOURCE
LIBS=-L/ -lpthread
APP_NAME = threadpooltest
.PHONY: all, clean
${APP_NAME}: ${OBJECTS}
$(GCC) $(OBJECTS) $(CFLAGS) $(LIBS) -o ${APP_NAME} //把$(OBJECTS)放在$(LIBS)之前
rm -rf *.o
%.o: %.c
${GCC} ${DEFS} ${CFLAGS} -c -o $@ $< -g
all: ${APP_NAME}
clean:
rm -rf *.o ${APP_NAME}