You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何安装Google RE2并解决C++项目链接错误问题

问题根源

你遇到的链接错误是因为RE2编译时依赖的Abseil库,与你通过CMake安装的Abseil在编译配置(如C++标准、ABI版本)上不匹配,或是链接时未完整引入RE2所需的所有Abseil依赖库。


正确的安装流程

1. 安装Abseil(统一用CMake保证编译一致性)

cd ~/Desktop
git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
mkdir build && cd build
# 指定C++17标准,与RE2默认编译标准对齐
cmake .. -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install

2. 安装RE2(用CMake编译,自动关联Abseil)

放弃默认的make编译方式,改用CMake编译RE2,确保它能自动识别系统中的Abseil并保持配置一致:

cd ~/Desktop
git clone https://code.googlesource.com/re2
cd re2
mkdir build && cd build
cmake .. -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install

编译测试代码的正确方法

方法1:手动g++编译

优先用pkg-config自动获取链接参数(安装完成后一般会生成re2.pc文件):

# 检查re2.pc是否存在
ls /usr/local/lib/pkgconfig/re2.pc
# 自动获取编译链接参数
g++ main.cpp -o main $(pkg-config --cflags --libs re2)

如果没有pkg-config配置文件,手动指定所有依赖的Abseil库:

g++ main.cpp -o main -lre2 -labsl_base -labsl_raw_logging_internal -labsl_log_severity -labsl_strings -labsl_cord -labsl_bad_optional_access -labsl_throw_delegate

方法2:CMake编译(推荐)

创建CMakeLists.txt,让CMake自动处理依赖关联:

cmake_minimum_required(VERSION 3.14)
project(re2_test)

set(CMAKE_CXX_STANDARD 17)

# 查找RE2和Abseil库
find_package(RE2 REQUIRED)
find_package(absl REQUIRED)

add_executable(main main.cpp)
# 链接所需库
target_link_libraries(main PRIVATE RE2::re2 absl::base absl::raw_logging_internal absl::strings)

执行编译:

mkdir build && cd build
cmake ..
make
./main

验证结果

运行编译后的程序,应输出1,表示正则匹配成功。

内容的提问来源于stack exchange,提问作者Shahaboddin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:41:34