【发布时间】:2015-04-30 06:46:13
【问题描述】:
我正在尝试在 MinGW/MSYS 环境中编译“xz-5.2.1”。我看到以下错误:
#error UINT32_C is not defined and unsigned int is not 32-bit.
error: #error size_t is not 32-bit or 64-bit
我对 MinGW 不熟悉,有人可以对此有所了解吗?看起来缺少一些宏定义。缺少一些头文件?
添加 1
我用来编译xz-5.2.1的命令是:
./configure
./make
错误截图:
一些背景知识,我正在关注link 来编译 Tesseract-OCR 库。而这只是其中的一个步骤。
添加 2
根据错误信息,我检查了sysdefs.h 文件。它包含以下内容:
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
上面的make输出包含-DHAVE_CONFIG_H,所以我认为应该包括系统头文件<config.h>。
但是很奇怪,我搜索了C:\MinGW\include,没有这样的文件。所以我GUESS这可能导致了第 57 行的未定义 UINT_MAX 警告。然后是第 58 行的 UINT32_C is not defined 错误。
但是不知道为什么系统头文件config.h不见了,从哪里得到。
添加 3
我对@987654340@ 进行了一些研究。 幸运的是我发现以下命令可以继续我的构建过程:(虽然我仍然不太确定它为什么会起作用。我所知道的是它可能与可移植性有关。 )
autoheader (this generates the config.h.in file)
./Configure (this generates the config.h file from the config.h.in file)
现在,我的构建过程被另一个问题阻止了,如下所示:
这似乎是一个已知问题。另一个thread 已经解决了这个问题。
(我会继续更新我的进度。)
【问题讨论】:
-
您需要提供更多关于您尝试构建
xz-5.2.1的如何的详细信息——例如您发出的命令会产生这些错误消息——使任何人都能有效地回答。 FWIW,sourceforge.net/p/mingw/bugs/2216/#f4cc 处的错误跟踪器注释表明xz-5.2.1在 MSYS 下使用 MinGW 成功构建,提供您的/mingw/lib树没有被与您的安装不匹配的*.la文件污染。 -
@KeithMarshall 我将编译命令添加到我的问题中。
-
config.h是不是系统标头;它是专门为每个单独的项目生成的,当您运行./configure时,它应该存在于您项目的构建目录中。 -
顺便说一句,当您为 MinGW 构建运行配置时,在 MSYS 中,您应该始终指定
--prefix参数;通常你想要 MinGW 安装目录的绝对 Windows 路径,例如./configure --prefix=C:/MinGW,(但确实使用斜杠而不是反斜杠,MSYS shell 将其解释为转义)。 -
另一个顺便说一句:通常最好将构建目录与源代码树分开,或者至少作为顶部源目录的
build子目录。在后一种情况下,将您的build目录作为 CWD,您将运行../configure --prefix=C:/MinGW。