C++ Google RE2库无法使用';制作testinstall';在ubuntu中

C++ Google RE2库无法使用';制作testinstall';在ubuntu中,c++,compilation,re2,C++,Compilation,Re2,大师 我正在使用Ubuntu 13.10 64位编译最新的Google RE2库,但“make testinstall”未能编译,以下是日志: kevin@ubuntu:~/re2$make testinstall cp testinstall.cc obj (cd obj&g++-I/usr/local/include-L/usr/local/lib testinstall.cc-lre2-pthread-o testinstall) /tmp/ccSsaSXS.o:在函数main'中: te

大师

我正在使用Ubuntu 13.10 64位编译最新的Google RE2库,但“make testinstall”未能编译,以下是日志:

kevin@ubuntu:~/re2$make testinstall

cp testinstall.cc obj (cd obj&g++-I/usr/local/include-L/usr/local/lib testinstall.cc-lre2-pthread-o testinstall) /tmp/ccSsaSXS.o:在函数
main'中:
testinstall.cc:(.text+0xce):对
re2::FilteredRE2::FirstMatch(re2::StringPiece const&,std::vector>const&)const的未定义引用 /usr/local/lib/libre2.so:对
pthread\u rwlock\u rdlock'的未定义引用
/usr/local/lib/libre2.so:对
pthread\u rwlock\u wrlock'的未定义引用 /usr/local/lib/libre2.so:对
pthread\u rwlock\u destroy'的未定义引用
/usr/local/lib/libre2.so:对
pthread\u rwlock\u init'的未定义引用 /usr/local/lib/libre2.so:对“pthread\u rwlock\u unlock”的未定义引用 collect2:错误:ld返回了1个退出状态 make:[testinstall]错误1

我试图用-lpthread替换-pthread,但仍然失败,然后我转储了libre2.so,发现pthread_xxx在其中。 以下是RE2论坛中的问题跟踪:

这里有人成功遵守过RE2吗?谢谢大家!

见:

将-pthread添加到LDFLAGS似乎修复了
maketest
(所有测试都是 通过),但不是
make testinstall


这将导致下一个错误

,这取决于您为“make testinstall”构建的内容,而“make testinstall”可能不是必需的。
我只需要让python re2端口工作,在运行make install之后就可以安装它。

我以前遇到过这个问题。修改makefile并使用-lpthread而不是-pthread。

因此我尝试在testinstall.cc中查找导致符号错误的行,发现唯一一行在第18行:

18-f.firstMatch(:abbcc:,ids)

我注释掉了这一行(因此下面的FullMatch函数仍然被调用),只运行了g++testinstall.cc-lre2-pthread-o testinstall(基本上就是Makefile所做的),并且我能够成功地获得一个二进制文件。虽然这可能并不能真正解决问题,但我们仍然可以使用RE2::Fullmatch和partial match函数


如果让我猜猜,可能在过滤的\u re2模块中的某个地方存在依赖关系?

我也有同样的问题。但是如果使用
-static
编译,一切都会顺利进行


nm-C
显示
.a
.so
文件中都存在“缺失”符号。

是的,如果我什么也不更改,“make test”和“make testinstall”都将失败。直到现在,我还没有找到一种方法让所有构建都通过: