热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

grpcgitee镜像编译

因为github被墙的厉害,gitclone很慢,grpcsubmodule还特别多,幸亏找到了gitee上的源,感谢git

因为github被墙的厉害,git clone很慢,grpc submodule还特别多,幸亏找到了gitee上的源,感谢gitee/githubplus作者

下载编译步骤如下:
编译grpc需要go支持,windows编译需要nasm,在ubuntu上可使用apt直接安装

sudo apt install golang yasm nasm

git clone https://gitee.com/githubplus/grpc.git
cd grpc
git tag
git checkout v1.20.0

修改.gitmodules文件,替换其中的github源为gitee源

[submodule "third_party/zlib"]path = third_party/zliburl = https://gitee.com/githubplus/zlib# When using CMake to build, the zlib submodule ends up with a# generated file that makes Git consider the submodule dirty. This# state can be ignored for day-to-day development on gRPC.ignore = dirty
[submodule "third_party/protobuf"]path = third_party/protobufurl = https://gitee.com/githubplus/protobuf.gitbranch = 3.0.x
[submodule "third_party/gflags"]path = third_party/gflagsurl = https://gitee.com/githubplus/gflags.git
[submodule "third_party/googletest"]path = third_party/googletesturl = https://gitee.com/githubplus/googletest.git
[submodule "third_party/boringssl"]path = third_party/boringsslurl = https://gitee.com/githubplus/boringssl.git
[submodule "third_party/benchmark"]path = third_party/benchmarkurl = https://gitee.com/githubplus/benchmark.git
[submodule "third_party/boringssl-with-bazel"]path = third_party/boringssl-with-bazelurl = https://gitee.com/githubplus/boringssl.git
[submodule "third_party/cares/cares"]path = third_party/cares/caresurl = https://gitee.com/githubplus/c-ares.gitbranch = cares-1_12_0
[submodule "third_party/bloaty"]path = third_party/bloatyurl = https://gitee.com/githubplus/bloaty.git
[submodule "third_party/abseil-cpp"]path = third_party/abseil-cppurl = https://gitee.com/githubplus/abseil-cpp
[submodule "third_party/libcxxabi"]path = third_party/libcxxabiurl = https://gitee.com/githubplus/libcxxabi.gitbranch = release_60
[submodule "third_party/libcxx"]path = third_party/libcxxurl = https://gitee.com/githubplus/libcxx.gitbranch = release_60
[submodule "third_party/data-plane-api"]path = third_party/data-plane-apiurl = https://gitee.com/githubplus/data-plane-api.git
[submodule "third_party/googleapis"]path = third_party/googleapisurl = https://gitee.com/githubplus/googleapis.git
[submodule "third_party/protoc-gen-validate"]path = third_party/protoc-gen-validateurl = https://gitee.com/githubplus/protoc-gen-validate.git
[submodule "third_party/upb"]path = third_party/upburl = https://gitee.com/githubplus/upb.git

git submodule update --init

cd third_party/protobuf

类似修改protobuf.gitmodules后,执行git submodule update --init

[submodule "third_party/benchmark"]path = third_party/benchmarkurl = https://gitee.com/githubplus/benchmark.git
[submodule "third_party/googletest"]path = third_party/googletesturl = https://gitee.com/githubplus/googletest.gitignore = dirty

使用cmake构建

mkdir build/linux-x86_64
cd build/linux-x864_64
cmake ../..
make

使用mingw交叉编译

mkdir -p build/mingw32
cd build/mingw32
cmake ../.. -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=x86
make grpc++

mkdir -p build/mingw64
cd build/mingw64
cmake ../.. -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=x86_64
make grpc++

error

Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)

include/grpc/impl/codegen/port_platform.h中添加

#if !defined(_WIN32_WINNT) || _WIN32_WINNT <0x0600
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif#ifndef _WIN32_WINNT
#error \ "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)"
#else /* !defined(_WIN32_WINNT) */
#if (_WIN32_WINNT <0x0600)
#error \ "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)"
#endif /* _WIN32_WINNT <0x0600 */
#endif /* defined(_WIN32_WINNT) */

find . -name *.a静态库

./libgrpc.a
./libgrpc&#43;&#43;.a
./libaddress_sorting.a
./libgpr.a
./third_party/protobuf/libprotobuf.a
./third_party/boringssl/ssl/libssl.a
./third_party/boringssl/crypto/libcrypto.a
./third_party/cares/cares/lib/libcares.a
./third_party/zlib/libzlibstatic.a

Makefile中链接

GRPC_LIBS &#43;&#61; protobuf grpc&#43;&#43; grpc gpr address_sorting cares ssl crypto z
LDFLAGS &#43;&#61; $(addprefix -l, $(GRPC_LIBS))

ubuntu16.04下编译好的库https://gitee.com/ithewei/grpc-release.git


推荐阅读
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
author-avatar
手机用户2702933671_440
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有