如何使用 MinGW 在 Windows 中构建 Google 的 protobuf?

新手上路,请多包涵

我使用 Codeblocks 作为我的 IDE 和 MingGW。我正在尝试使用 google 协议缓冲区,但在构建 protobuf 时遇到了麻烦。

protobuf 的自述文件说:

如果您使用的是 Cygwin 或 MinGW,请按照上面的 Unix 安装说明进行操作。

Unix指令说:

要构建和安装 C++ 协议缓冲区运行时和协议缓冲区编译器 (protoc),请执行以下命令: $ ./configure $ make $ make check $ make install

我不知道如何在 Windows 中执行这些,因为“配置”是一个 Unix 脚本,我不知道如何执行它,或者其他命令。

有人可以更详细地解释我如何在 Windows 上使用 MinGW 构建 protobuf 吗?

原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
1 个回答

这对我有用:

  1. 您需要使用 mingw 安装 MSYS。这是一个最小的类 unix shell 环境,可让您配置/制作大多数 unix 包。阅读 mingw 文档以了解如何安装它(使用 mingw-get 或 GUI 安装程序)。

  2. 安装 MSYS 后,您应该在开始菜单中有一个快捷方式,名为“MinGW Shell”。这会打开一个带有 bash 的控制台。

  3. 将源 tarball 解压缩到您的 MSYS 主目录。我在“D:\prog”中安装了mingw,所以目录是“D:\prog\MinGW\msys\1.0\home\”。您可以从 shell 提示符中告知您的 MSYS 用户名。完成后,您应该有一个目录“D:\prog\MinGW\msys\1.0\home\\protobuf-2.4.1”。

  4. 在 shell 提示符下,切换到 protobuf 目录:

cd protobuf-2.4.1

  1. 运行配置脚本(注意反引号):

./configure --prefix=`cd /mingw; pwd -W`

--prefix 参数确保 protobuf 安装在 mingw 目录树而不是 MSYS 目录中,因此您可以在 MSYS shell 之外构建(例如使用 CodeBlocks…)

  1. 运行制作:

make

  1. 安装:

make install

  1. 而已。您现在应该能够使用 protobuf 编译您的项目。

你应该能够:

  • 从您的项目/makefile 调用 protoc
  • #include <google/protobuf/message.h> 等等。
  • 链接 -lprotobuf-lprotobuf-lite

高温高压

彼得

编辑:使这个更新一点。我尝试使用当前版本的 MinGW 和 protobuf 2.5.0 设置新 PC,这些是我遇到的问题:

  1. 开始菜单中没有“MinGW Shell”快捷方式。

由于某种原因,当前的 MinGW 安装无法安装它。

但是在 msys.bat <Mingw home>\msys\1.0 它会打开一个带有 bash 的控制台。在某处创建该批处理文件的快捷方式。

  1. gcc 在 MSYS shell 中不起作用。

我不得不手动运行一个安装后的批处理文件并在那里回答问题。这会设置在 MSYS 环境中挂载 mingw 目录的 fstab 条目。

你需要运行 <Mingw home>\msys\1.0\postinstall\pi.bat

  1. 我的 Avira 防病毒软件干扰了 protobuf 编译。

它抱怨生成的 protoc.exe 是“TR/Crypt.XPACK.Gen”木马并阻止对该文件的访问,从而导致构建损坏。

我在尝试启动 protoc 时收到类似 protoc:./.libs/lt-protoc.c:233: FATAL: couldn't find protoc. 的错误消息。

我不得不再次禁用 Avira 实时扫描仪和 make clean && make && make install

编辑#2:

这篇文章已经过时了,mingw 不再等于 mingw。在这个时代,我宁愿推荐 MSYS2,它带有 ArchLinux 的 pacman 包管理器的一个端口,一个最近的、工作更好的(c++11 std::thread 支持!) mingw fork,用于 32 位和 64 位,以及一个 protobuf 包,您只需要安装它就可以了。

去这里 下载!

希望这可以帮助!

彼得

原文由 Peter Remmers 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题