Protobuf 3.0.0-alpha-1 不在 Windows 上编译

Posted

技术标签:

【中文标题】Protobuf 3.0.0-alpha-1 不在 Windows 上编译【英文标题】:Protobuf 3.0.0-alpha-1 not compiling on windows 【发布时间】:2015-01-16 20:06:54 【问题描述】:

我正在尝试使用 MinGW 4.9.2 和 MSYS 在 Windows 上编译 protobuf 3.0.0 alpha 1。

按照我应该做的说明:

./configure 
make
make check
make install

我添加了--prefix=/c/path/to/mingw to configure (How to build Google's protobuf in Windows using MinGW?) 但没有帮助。

它在make 失败并显示以下消息:

CDPATH="$ZSH_VERSION+.:" && cd . && /bin/sh /home/Markus/protobuf-3.0.0-alpha- 1/缺少 aclocal-1.14 -I m4

/home/Markus/protobuf-3.0.0-alpha-1/missing: line 81: aclocal-1.14: command not 找到了

警告:您的系统上缺少“aclocal-1.14”。

    You should only need it if you modified 'acinclude.m4' or
     'configure.ac' or m4 files included by 'configure.ac'.
     The 'aclocal' program is part of the GNU Automake package:
     <http://www.gnu.org/software/automake>
     It also requires GNU Autoconf, GNU m4 and Perl in order to run:
     <http://www.gnu.org/software/autoconf>
     <http://www.gnu.org/software/m4/>
     <http://www.perl.org/>

make: *** [aclocal.m4] 错误 127

我尝试安装 Automake,但它没有附带 aclocal。

今天在工作中,我第一次尝试使用裸机 MinGW 和 MSYS 就成功了。

【问题讨论】:

【参考方案1】:

看来您需要安装 autoconf(它与 automake 是分开的,尽管它们经常一起使用)。您可能还需要安装 libtool。

【讨论】:

对我来说并没有那么容易工作,因为不知何故我的 mingw 不喜欢 autoconf。我最终使用 cygwin 来编译 protobuf,但至少它现在可以工作了。 嗯,“MinGW 不喜欢 autoconf”是什么意思? autoconf 是 MSYS 打算运行的主要内容之一,因此它应该可以工作。另一方面,如果您是从发布包编译,那么 autoconf/automake/libtool/etc.不应该是必需的(因为它随包一起提供),因此您可能需要针对 protobufs 提交错误。 在 MSYS 中配置后运行 make 时,它​​不断发送几千行空的“autom4te:”(之后没有其他内容,只是“autom4te”并以错误结束。发生在我测试的各种版本中,包括最新的。关于不需要:这很奇怪。我在工作的 PC 上不需要它,但在我的笔记本电脑和私人 PC 上它都失败了。我还发现了一个二进制包 autoconf 现在可以与 MSYS 一起使用。跨度> @Shyro 因此,如果构建认为文件已过期,它将重新运行 autotools。如果它在一台计算机上工作而在另一台计算机上失败,那么问题可能只是时钟。发生故障的计算机上的时钟是否设置错误? 实际上它在两个系统上都失败了,只在一个系统上工作。所有这些都正确设置了时钟。我想不出任何会对其产生影响的差异。

以上是关于Protobuf 3.0.0-alpha-1 不在 Windows 上编译的主要内容,如果未能解决你的问题,请参考以下文章

当子类不在同一个程序集中时如何在protobuf中列出继承

在Creator3D中使用protobuf的快速解决方法!

protobuf动态解析

protobuf 怎么查看版本

深入protoBuf

protobuf相关优化杂谈