news 2026/9/26 19:51:12

Linux中go程序调用c++的re2库配置问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux中go程序调用c++的re2库配置问题

当要进行CGO编译程序时,除了go语言的相关环境配置,还要注重c/c++的配置管理,比如G++的版本问题,re2库是否用的较新的C++库Abseil等等

安装RE2库

如果是centos的话就需要安装re2-devel,或者直接git clone。

yum install re2-devel // 通过yum安装 git clone https://github.com/google/re2.git // 通过git clone

这里如果centos默认的软件源里面没有包含re2-devel这个包,那么通过yum install就会报错

re2-devel通常都在EPEL(Extra Packages for Enterprise Linux) 源中,所以可以先安装个EPEL,然后再安装re2。

// 安装EPEL源 yuminstallepel-release -y // 刷新缓存安装re2-devel yum makecache yuminstallre2-devel -y

如果安装EPEL的过程也报一样的错误,那就说明当前这个镜像原已经停服了,需要更换镜像源。但这里暂时先提供另外一种安装方法 — 直接手动安装源码进行编译安装。

安装gcc

如果当前已经安装好了gcc,要注意一下gcc的版本和自己要调用的re2库的版本情况,因为有些新的cre2里面用的是更新的C++17编码,所以gcc的版本不能太旧,不然无法编译C++17的代码。
这里手动安装gcc,因为yum源有问题不能直接install
https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz,然后把压缩包移到tmp文件夹下进行解压,解压完之后,cd到gcc-11.2.0,下载依赖库

cdgcc-11.2.0 ./contrib/download_prerequisites // 下载依赖库cd..mkdirgcc-buildcdgcc-build../gcc-11.2.0/configure --prefix=/usr/local/gcc-11\--disable-multilib --enable-languages=c,c++# 安装到/usr/local/gcc-11make-j$(nproc)# 使用多核CPU加速编译makeinstallexportPATH=/usr/local/gcc-11/bin:$PATH// 版本改成自己对应的版本

安装Abseil

安装完gcc后,如果你的RE2版本需要依赖Abseil库的话,那么还需要再安装Abseil库,安装Aseil之前,也需要再安装CMake和Ninja,因为指定的yum源有问题或者已经停服,所以需要我们手动对源码进行编译和安装。

yuminstall-y cmake ninja-build // 安装CMake 和Ninja,如果安装不了,也需要重新下载源码,编译和安装cd/tmp/# 从官方下载链接(如果无法访问,需要本地下载后上传)wgethttps://cmake.org/files/v3.10/cmake-3.10.0.tar.gztar-zxvf cmake-3.10.0.tar.gzcdcmake-3.10.0# 使用系统默认的旧版 g++ 进行配置./bootstrap --prefix=/usr/local# 编译(这一步需要较长时间)make# 安装makeinstall# ninja也一样# 下载Abseil源码cd/tmp/gitclone https://github.com/abseil/abseil-cpp.gitcdabseil-cppmkdirbuildcdbuild cmake -G Ninja -DCMAKE_CXX_STANDARD=17-DCMAKE_INSTALL_PREFIX=/usr/local..

注意:这里CMake的过程中-DCMAKE_CXX_STANDARD= 一定要改成自己当前需要的C++版本,如果版本不一样的话,那么Abseil编译出来的也是不一样的,即便能安装成功,RE2可能也用不了。我这里的是C++17
编译并安装
这会将 Abseil 的库文件 (libabsl_*.a) 和头文件 (absl/…),以及最重要的 .pc 配置文件,安装到 /usr/local/ 目录下。

ninja ninjainstall# 配置环境变量exportPKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig ldconfig

编译RE2

// 来到你安装RE2的路径cd/root/.../re2makeclean // 清理缓存 // 编译RE2makeCXXFLAGS='-std=c++17 -pthread -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -I.'makeinstallexportPKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH// 验证RE2是否能被找到 pkg-config --modversion re2

如果RE2安装成功,能够被找到,就可以回到自己的项目里面go build重新构建依赖。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 13:06:36

信息安全技术与Kali Linux

信息安全技术概述 信息安全技术旨在保护信息系统中的数据免受未经授权的访问、泄露、篡改或破坏。其核心目标是确保数据的机密性、完整性和可用性(CIA三要素)。随着数字化进程加速,信息安全技术已成为企业、政府及个人的关键需求。 核心信息…

作者头像 李华
网站建设 2026/9/27 2:56:26

GEO系统:多区域搜索排名监控与品牌形象统一维护解决方案

一、品牌资产管理的数字化挑战在全球化运营和数字化营销时代,企业品牌面临两大核心挑战:区域分散性:不同地区搜索结果差异导致的品牌曝光不均衡形象碎片化:多渠道内容传播引发的品牌认知不一致二、GEO系统核心功能架构1. 智能多区…

作者头像 李华
网站建设 2026/9/26 14:39:01

17、Apache服务器的代理配置、URL重写、自定义日志及性能监控

Apache服务器的代理配置、URL重写、自定义日志及性能监控 在Web服务器管理中,Apache是一款广泛使用的开源服务器软件。本文将详细介绍Apache服务器的代理配置、URL重写、自定义日志创建以及性能监控的相关知识和操作步骤。 1. 代理服务器配置 当代理服务器正确设置后,若客…

作者头像 李华
网站建设 2026/9/27 6:26:11

18、Apache服务器性能测试与配置全解析

Apache服务器性能测试与配置全解析 1. 基础问题解答 在使用Apache服务器时,有一些基础问题需要了解。例如,若要在重启服务器前拒绝所有新请求并完成所有待处理请求,可使用 apachectl graceful 选项。 ab 工具的默认请求数为1,而Web服务器守护程序常用的配置文件是 h…

作者头像 李华
网站建设 2026/9/27 11:47:51

PostgreSQL 18 远程操作实战:从连接到备份的操作实践记录

PostgreSQL 18 远程操作实战:从连接到备份的完整指南 引言 作为一名开发者,掌握数据库的基本操作是必备技能之一。最近我在 Ubuntu 24.04 服务器上安装了 PostgreSQL 18,为了更好地理解和掌握 PostgreSQL 的日常管理和操作,我进…

作者头像 李华
网站建设 2026/9/26 22:27:43

S33-装一个Server2016+PCS7虚拟机

最近不知道哪股邪风吹过小编的头顶,陆续接到3个PCS7的项目,真是看小编头发还不够秃非得再薅掉几根的节奏。那么如题,闲话少说;跟上节奏,先来搭建一个编程环境。依然采用虚拟机的方式。1-准备虚拟机软件,2-准…

作者头像 李华