ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

brpc 编译部署:2 条路线从零跑通生产构建

2026/9/9 15:08:26 拓冰建站 浏览量
brpc 编译部署:2 条路线从零跑通生产构建 brpc 编译部署:2 条路线从零跑通生产构建【免费下载链接】brpcbrpc is an Industrial-grade RPC framework using C Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. brpc means better RPC.项目地址: https://gitcode.com/GitHub_Trending/brpc/brpcbrpc 是百度开源的高性能 C RPC 框架。本文给出一条完整的 brpc 编译部署路径:从 echo 快速验证、脚本静态构建,到 CMake 调试构建和上线前调优,所有命令均对照 v1.17.0 源码验证,可直接执行。 先跑通再说:echo 示例验证git clone https://gitcode.com/GitHub_Trending/brpc/brpc cd brpc cd example/echo_c make # 第一次会连带构建 brpc 静态库 ./echo_server ./echo_clientecho 是仓库里最薄的一对一个服务端加客户端,它编译通过并且互通,说明你的 GCC、protobuf、gflags、leveldb 工具链全部就位。第一次make耗时较长,因为要先构建 brpc 本体的静态库,后续编译走增量。客户端打印出回显报文即代表验证成功,CtrlC 停掉服务端即可。 30 秒选路场景推荐方式关键命令产出物生产脚本静态构建sh config_brpc.sh --headers/usr/include --libs/usr/lib make -j$(nproc)src/libbrpc.a,静态链接的服务二进制开发调试CMake 构建cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDSON cmake --build build -j6build/构建树与compile_commands.json快速验证示例目录直编cd example/echo_c makeecho_server、echo_client两条路线产物不同,按目的选,不要混用。脚本路线是官方生产路径,CMake 路线服务于日常开发。 生产路线:静态构建三步走取码与装依赖git clone https://gitcode.com/GitHub_Trending/brpc/brpc cd brpc sudo apt-get install -y git g make libssl-dev libgflags-dev libprotobuf-dev libprotoc-dev protobuf-compiler libleveldb-devUbuntu 执行上面两行即可,核心依赖是 gflags、protobuf、leveldb 三件套。CentOS 改用sudo yum install git gcc-c make openssl-devel gflags-devel protobuf-devel protobuf-compiler leveldb-devel,并先装 EPEL。编译器要求 GCC 5.0-11.2(推荐 8.2)或 Clang 3.5-4.0,先确认再开工。配置编译参数sh config_brpc.sh --headers/usr/include --libs/usr/lib # 可选:--cxxclang --ccclang 换编译器;--nodebugsymbols 瘦身;--with-glog 换 glog 日志--headers和--libs决定依赖检索路径,多路径用空格分隔,也可只传一个父目录,脚本会递归搜索所有子目录。依赖版本有硬约束:protobuf 3.0-5.29(使用 protobuf 内部 API,已不兼容 2.x)、gflags 2.1-2.2.2、openssl 0.97-1.1。系统 protobuf 版本不在区间内时,先翻排错速查表再编译。并行编译make -j$(nproc)并行数取 CPU 核数,是安全上限。brpc 默认同时产出静态库和共享库,构建结束后在src/目录取产物,生产服务默认静态链接libbrpc.a,目标机器不用装任何运行环境。开发路线:CMake 构建三步走配置构建参数cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDSON-DCMAKE_EXPORT_COMPILE_COMMANDSON生成compile_commands.json,VSCode 或 Emacs 的 LSP 靠它做智能提示和跳转,调试代码体验差别很大。想启用 glog 加-DWITH_GLOGON;默认值以 CMakeLists.txt 为准,例如WITH_DEBUG_SYMBOLSON、WITH_GLOGOFF。移除调试符号需先删掉build/CMakeCache.txt,再用-DWITH_DEBUG_SYMBOLSOFF重新执行 cmake。并行编译cmake --build build -j6CMake 3.13 可以把配置和编译合并成cmake -B build cmake --build build -j6两步连写。-j6只是示例值,按机器核数调整。验证产物cd test mkdir build cd build cmake -DBUILD_UNIT_TESTSON .. make make test单元测试默认不构建,BUILD_UNIT_TESTS默认 OFF,必须显式打开。测试全绿说明 CMake 路线的产物可用,失败信息直接定位到具体模块。上线前三个开关开关何时选代价命令静态链接(默认)生产环境、容器化、目标机不装依赖二进制更大,编译更久make动态链接同机多个服务共享同一份框架库要随包分发libbrpc.so,存在版本错配风险make clean LINK_SO1 maketcmalloc 默认不链接,需要提升内存分配性能时手动预载,且版本敏感(支持 1.7-2.5)。线程模型方面,工作线程数在服务启动参数里控制,运行态到内置服务页面核对;实例监控在任意机器跑起 tools/trackme_server,被追踪的实例带-trackme_serverSERVER参数启动,它会周期性收到实例 ping 并打印日志。排错速查现象根因一行解法编译报undefined reference to google::protobuf::xxxbrpc 使用 protobuf 内部 API,兼容区间 3.0-5.29,不兼容 2.x用包管理器把 protobuf 换到 3.x-5.29,重跑配置步骤程序在 main 前挂掉或死锁与 brpc 不同编译器版本编译的 tcmalloc用编译 brpc 的同一 GCC 重编 tcmalloc/usr/src/gtest不存在系统版本变化,gtest 源码目录迁移改用/usr/src/googletest/googletest上图即编译器错配导致的 tcmalloc 死锁现场,官方文档中作为典型样例给出。整条流程压缩成一行:装依赖 → 编译 → 跑 echo → 调线程数 → 上线。下一步入口:docs/cn/getting_started.md 有全量构建参数,example/ 下还有 HTTP、gRPC 等更多示例,docs/cn/builtin_service.md 讲服务上线后的运行时观测。【免费下载链接】brpcbrpc is an Industrial-grade RPC framework using C Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. brpc means better RPC.项目地址: https://gitcode.com/GitHub_Trending/brpc/brpc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考