Undefined symbols for architecture x86_64:
"_regcompA", referenced from:
testing::internal::RE::Init(char const*) in libgoogle_gtest.a(gtest-port.cc.o)
"_regexecA", referenced from:
testing::internal::RE::FullMatch(char const*, testing::internal::RE const&) in libgoogle_gtest.a(gtest-port.cc.o)
testing::internal::RE::PartialMatch(char const*, testing::internal::RE const&) in libgoogle_gtest.a(gtest-port.cc.o)
"_regfreeA", referenced from:
testing::internal::RE::~RE() in libgoogle_gtest.a(gtest-port.cc.o)
"_regcompA", referenced from:
testing::internal::RE::Init(char const*) in libgoogle_gtest.a(gtest-port.cc.o)
"_regexecA", referenced from:
testing::internal::RE::FullMatch(char const*, testing::internal::RE const&) in libgoogle_gtest.a(gtest-port.cc.o)
testing::internal::RE::PartialMatch(char const*, testing::internal::RE const&) in libgoogle_gtest.a(gtest-port.cc.o)
"_regfreeA", referenced from:
testing::internal::RE::~RE() in libgoogle_gtest.a(gtest-port.cc.o)
ld: symbol(s) not found for architecture x86_64
最近使用rocksdb的时候发现这个问题,一时犯懒,没去解决,反正不用test,结果今天编译googletest的时候有遇到这个问题,回过头来看一下这个问题,原来就是googletest的编译问题。
这时候我才意识到采坑了。非说找不到,但是查了下,这是系统库啊,没道理啊,拉下来googletest的源码,然后跳转了一下,发现跳转到了boost目录下的同名文件。额,这基本上就说明了include错误了文件了。
于是修改C_INCLUDE_PATH和CPLUS_INCLUDE_PATH 把boost目录去掉,如果没有设置过这两个,可以设置一下。再编译,就关联到正确的系统文件,搞定。