Windows上编译protobuf-c

1. 引言

(未完)
Protocol Buffers(protobuf)是 Google提出的语言无关、平台无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。其优缺点如下:

由于工作中需要使用google的protobuf对数据进行序列化,因此,打算自己编译下protobuf使用。google在github上有两个protobuf库,分别是 C语言实现 和 其他多语言实现。如果你想使用C++或其他语言的实现可以下载后面源码自行编译,且关于protobuf方方面面的内容均可从这个工程说明部分进入,当然也可以直接到Google Procobuf官网上去查找:https://developers.google.com/protocol-buffers/

本文想要说明的是如何在Windows上编译 C语言实现 库,因为这个库在使用上只需要引入protobuf-c.h头文件、protobuf-c.c源文件即可使用,不需要引入第三方库。

2. 环境安装

我本想尝试用CMake生成VS2017工程,使用MSVC来编译使用(多语言版本是可行的),但是编译C语言实现的protobuf时,遇到了如下的问题,花了一定的时间没有找到好的解决方法。
在这里插入图片描述
因此,改用MSYS2提供的类Unix环境进行编译。

2.1 下载、安装、初始化MSYS2

MSYS2官网:https://www.msys2.org/wiki/MSYS2-installation/
MSYS2是干什么的?:https://www.msys2.org/wiki/How-does-MSYS2-differ-from-Cygwin/
安装 && 初始化:https://www.msys2.org/

2.2 编译之前

  1. 切换到源码目录:
    错误做法:
    在这里插入图片描述
    正确做法:
    在这里插入图片描述
  2. 安装编译环境,否则会报错:
    在这里插入图片描述
    安装编译环境:pacman -S base-devel
    在这里插入图片描述
    可以选择全安装,稍微等待一段时间。

2. 编译过程

  1. 下载源码:
1
git clone https://github.com/protobuf-c/protobuf-c.git

3. 参考

Protobuf学习
protobuf-c-win