2014-10-07 4 views
4

Google 테스트를 배우고 있습니다. 나는, gtest 다운로드 명령 ./configuremake를 실행하고 난 here에서이 모든 것을 가지고Google 테스트 누락 DSO

$ sudo cp -a include/gtest /usr/include 
$ sudo cp -a lib/.libs/* /usr/lib/ 

끝났다. 이 코드이

$ export GTEST_HOME=~/usr/gtest 
$ export LD_LIBRARY_PATH=$GTEST_HOME/lib:$LD_LIBRARY_PATH 
$ g++ -I $GTEST_HOME/include -L $GTEST_HOME/lib -lgtest -lgtest_main -lpthread test.cpp 

같은

#include <gtest/gtest.h> 
TEST(MathTest, TwoPlusTwoEqualsFour) { 
    EXPECT_EQ(2 + 2, 4); 
} 

int main(int argc, char **argv) { 
    ::testing::InitGoogleTest(&argc, argv); 
    return RUN_ALL_TESTS(); 
} 

를 실행하려고하지만 난

/usr/bin/ld: /tmp/ccVTj3Rk.o: undefined reference to symbol '_ZN7testing8internal9EqFailureEPKcS2_RKSsS4_b' 
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libgtest.so: error adding symbols: DSO missing from command line 
collect2: error: ld returned 1 exit status 

내가 뭔가 잘못하고 있는가하거나 버그에 오류가 발생했습니다?

+0

AFAIK,'gtest_main'에 연결하면'main()'을 구현하지 말아야합니다. – tgmath

+0

그래서'main()'을 삭제해야합니까? 당신은 무엇을 목적으로합니까? – TheGuyWithStreetCred

+1

'main()'없이 테스트하고 컴파일했습니다. 중요한 것은'test.cpp' 다음에 libs를 추가하는 것입니다. – tgmath

답변

6

설정에 약간의 오류가 있습니다.

당신은 당신의 포함 복사에/gtest는/usr/포함 (sudo cp -a include/gtest /usr/include),하지만 당신은 당신이 ~는/usr/gtest 디렉토리에 gtest 헤더를 찾기 위해 컴파일러에게 컴파일 할 때, 이전에 설정 한 디렉토리 (/usr/include/gtest)가 아닙니다. 같은 일들이 lib/.libs/* 파일들로 가득 찼습니다. 그들을 장소에서 복사하고 컴파일 할 때 다른 장소에서 요구합니다.

유지하는 다음과 같은 구성 :

$ sudo cp -a include/gtest /usr/include 
$ sudo cp -a lib/.libs/* /usr/lib/ 

#include "gtest/gtest.h" 에 변화 #include <gtest/gtest.h> 시도 같이 컴파일 :

g++ -g -Wall <your .cpp files> -I /usr/include/gtest/ -L /usr/lib/ -lgtest -lgtest_main -lpthread 

그리고 당신이 ./a.out를 실행 한 후 다음과 같은 출력을 볼 수 파일 (또는 실행 파일에 지정한 이름)

[==========] Running 1 test from 1 test case. 
[----------] Global test environment set-up. 
[----------] 1 test from MathTest 
[ RUN  ] MathTest.TwoPlusTwoEqualsFour 
[  OK ] MathTest.TwoPlusTwoEqualsFour (0 ms) 
[----------] 1 test from MathTest (0 ms total) 

[----------] Global test environment tear-down 
[==========] 1 test from 1 test case ran. (0 ms total) 
[ PASSED ] 1 test.