Ubuntu下C++使用Google-RE2出现未定义引用错误求助
解决Google RE2编译链接错误的方案
错误原因
你遇到的undefined reference是链接阶段的问题——编译器能找到RE2的头文件,但链接器找不到实现RE2函数的库文件。
解决步骤
1. 正确的编译命令
编译时需要显式链接RE2库(以及它依赖的Abseil库),用g++的话,命令格式如下:
g++ -o your_program main2.cpp -lre2
如果RE2安装在非系统默认路径(比如/usr/local/lib之外),需要用-L指定库的路径:
g++ -o your_program main2.cpp -L/path/to/re2/lib -lre2
2. 代码小优化(可选)
你的测试代码里s和t变量声明了但没使用,虽然不影响编译,但可以调整成支持捕获匹配内容的形式,比如:
#include <iostream> #include <re2/re2.h> using namespace re2; using namespace std; int main() { string match_content; // 捕获括号内的匹配内容到变量中 if(RE2::FullMatch("hello", "h(.*)o", &match_content)) cout << "匹配成功: " << match_content << endl; else cout << "Not match." << endl; return 0; }
验证安装(如果上述命令仍报错)
如果还是出现链接错误,检查RE2是否正确安装:
- 确认
/usr/lib或/usr/local/lib下存在libre2.so文件 - 确认头文件
re2/re2.h在/usr/include或/usr/local/include目录下
内容的提问来源于stack exchange,提问作者Mostafa Etemadian
相关产品推荐
相关产品推荐

