对Gtest的未定义的pthread引用

时间:2015-05-07 06:39:33

标签: c++ googletest

我从昨天开始尝试做gtest工作时一直在摸不着头脑,但我在阅读下面的链接后无法修复它。

undefined reference to `pthread_key_create' (linker error)

error during making GTest

显示的编译错误是:

g++ main.o tests.o var.o -L ../gmock/lib/.libs -L ../gmock/gtest/lib/.libs 
-lgtest -lgmock -lpthread -o test 
../gmock/gtest/lib/.libs/libgtest.so: undefined reference to `pthread_key_create'
../gmock/gtest/lib/.libs/libgtest.so: undefined reference to `pthread_getspecific'
../gmock/gtest/lib/.libs/libgtest.so: undefined reference to `pthread_key_delete'
../gmock/gtest/lib/.libs/libgtest.so: undefined reference to `pthread_setspecific'
collect2: error: ld returned 1 exit status
make: *** [test] Error 1

我的Makefile是:

CXXFLAGS=-I ../gmock/include -I ../gmock/gtest/include
test:main.o tests.o var.o 
    g++ $^ -L ../gmock/lib/.libs -L ../gmock/gtest/lib/.libs -lgtest -lgmock -lpthread -o $@ 

我仍然在学习Linux,编译和链接源文件。

1 个答案:

答案 0 :(得分:1)

错误是关于pthread上的链接错误。 你必须将pthread标志设为-pthread,然后跟随CXX就可以了。

LDLIBS =  -L../gmock/lib/.libs -L../gmock/gtest/lib/.libs -lgtest -lgmock 
test:main.o tests.o var.o
    g++ -isystem $(LDLIBS) -pthread  $^ -o $@

This链接有一个很好的Makefile来解决你的所有问题,它遵循创建Makefile的一般标准