【发布时间】:2014-12-01 15:46:57
【问题描述】:
我正在学习谷歌测试。我下载了 gtest,运行命令 ./configure 和 make 并以
$ sudo cp -a include/gtest /usr/include
$ sudo cp -a lib/.libs/* /usr/lib/
我从here 得到了这一切。我试图运行这段代码
#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();
}
喜欢这个
$ 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
但我收到一个错误
/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
我做错了什么还是一个错误?
【问题讨论】:
-
AFAIK,如果你链接到
gtest_main,你不应该实现main() -
所以我应该删除
main()?你的目的是什么 -
我在没有
main()的情况下对其进行了测试,并像您一样对其进行了编译。重要的是在test.cpp之后添加库。 -
我修复了这个改变 test.cpp 在命令行上的位置。把它放在图书馆之前。即:g++ test.cpp -I $GTEST_HOME/include -L $GTEST_HOME/lib -lgtest -lgtest_main -lpthread
标签: c++ googletest