【发布时间】:2018-10-25 17:36:27
【问题描述】:
我已经安装了解析 C 代码的 pycparser。
使用 pycparser 我想解析一个开源项目,即 PostgreSQL(version-11.0)。我使用 Visual Studio Express 2017 编译器套件构建了它。但是在编译过程中找不到一些头文件,即windows.h和winsock2.h。
在查看构建PostgreSQL的目录结构时,我发现它没有这些头文件。如何解决这个问题?
还发生了一个奇怪的错误:
postgresql/src/include/c.h:363:2: error: #error 必须有一个工作 64位整数数据类型
注意:我使用的是 Windows 10 64 位平台和 postgresql-11.0
步骤如下:
我下载了 Visual Studio 2017、Windows-10 SDK、Active Perl,如在 PostgreSQL 中从源代码构建的步骤中所述。
之后,我打开 Visual Studio 的开发人员命令提示符并导航到文件夹 postgresql-11.0/src/tools/msvc
使用命令“build”来构建 postgresql。构建过程成功,但在PostgreSQL的目录结构中仍然找不到windows.h和winsock2.h。
【问题讨论】:
-
请描述您用于构建 PostgreSQL 的确切步骤。
windows.h和winsock2.h应由 MSVC 提供。 MSVC 构建过程应将pg_config.h.win32复制到pg_config.h,以便定义HAVE_LONG_LONG_INT_64。您一定错过了该步骤,否则您将不会收到该错误消息。 -
我已经编辑了我的问题并提到了我构建 postgresql 所遵循的步骤
-
我已经看到了这两个文件,即 pg_config.h.win32 和 pg_config.h。这两个文件都是彼此的精确副本。我仍然收到此错误消息。
-
正如我在回答中所说,您必须教这个 pycparser 才能找到它们。请注意,PostgreSQL 仅支持 GNU make,因此您需要自行处理。
-
先生,我已经成功地教 pycparser 找到这些文件,即 windows.h 和 winsock2.h。仍然存在的错误是:: postgresql/src/include/c.h:363:2: error: #error must have a working 64-bit integer datatype
标签: postgresql pycparser