我从昨天开始尝试做gtest工作时一直在摸不着头脑,但我在阅读下面的链接后无法修复它。
undefined reference to `pthread_key_create' (linker error)
显示的编译错误是:
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,编译和链接源文件。
答案 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的一般标准