On this page
17.1. 使用 Visual C 或 Microsoft Windows SDK 构建
可以使用 Microsoft 的 Visual C 编译器套件来构建 PostgreSQL。这些编译器可以来自 Visual Studio,Visual Studio Express 或某些版本的 Microsoft Windows SDK。如果尚未设置 Visual Studio 环境,则最简单的方法是使用 Visual Studio 2019 或 Windows SDK 10 中的编译器,这两个编译器均可以从 Microsoft 免费下载。
Microsoft Compiler 套件可以同时进行 32 位和 64 位构建。 Visual Studio 2005 到 Visual Studio 2019 以及独立的 Windows SDK 版本 6.0 到 10 都可以使用 32 位 PostgreSQL 构建。MicrosoftWindows SDK 版本 6.0a 到 10 或 Visual Studio 2008 及更高版本支持 64 位 PostgreSQL 构建。使用 Visual Studio 2005 编译到 Visual Studio 2013 时,编译到 Windows XP 和 Windows Server 2003 均受支持。使用 Visual Studio 2015 的编译到 Windows Vista 和 Windows Server 2008 均受支持。使用 Visual Studio 2017 和 Visual Studio 2019 的编译时受支持 Windows 7 SP1 和 Windows Server 2008 R2 SP1.
使用 Visual C 或 Platform SDK 进行构建的工具位于src/tools/msvc
目录中。在构建时,请确保系统路径中没有 MinGW 或 Cygwin 的工具。此外,请确保 PATH 中具有所有必需的 Visual C 工具。在 Visual Studio 中,启动 Visual Studio 命令提示符。如果要构建 64 位版本,则必须使用命令的 64 位版本,反之亦然。在 Microsoft Windows SDK 中,启动“开始”菜单上 SDK 下方列出的 CMD Shell。在最新的 SDK 版本中,您可以使用setenv
命令更改目标 CPU 体系结构,构建类型和目标 OS,例如setenv /x86 /release /xp
以 32 位版本的发行版定位到 Windows XP 或更高版本。有关setenv
的其他选项,请参见/?
。所有命令应从src\tools\msvc
目录运行。
在构建之前,您可能需要编辑文件config.pl
以反映要更改的任何配置选项,或要使用的任何第三方库的路径。通过首先读取并解析文件config_default.pl
,然后应用对config.pl
的任何更改,可以确定完整的配置。例如,要指定 Python 安装的位置,请将以下内容放在config.pl
中:
$config->{python} = 'c:\python26';
您只需要指定与config_default.pl
中的参数不同的那些参数即可。
如果需要设置其他任何环境变量,请创建一个名为buildenv.pl
的文件,然后在其中放置所需的命令。例如,要添加不在路径中的野牛路径,请创建一个包含以下内容的文件:
$ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin';
要将其他命令行参数传递给 Visual Studio 构建命令(msbuild 或 vcbuild):
$ENV{MSBFLAGS}="/m";
17.1.1. Requirements
要构建 PostgreSQL,需要以下附加产品。使用config.pl
文件来指定库所在的目录。
Microsoft Windows SDK
- 如果您的构建环境未附带受支持的 Microsoft Windows SDK 版本,则建议您升级到最新版本(当前为版本 10),可从https://www.microsoft.com/download下载。
您必须始终将 SDK 的 WindowsHeaders 和库部分包括在内。如果安装包括 Visual C 编译器的 Windows SDK,则不需要 Visual Studio 来构建。请注意,从 8.0a 版开始,Windows SDK 不再附带完整的命令行生成环境。
ActiveState Perl
- 运行构建生成脚本需要 ActiveState Perl。 MinGW 或 Cygwin Perl 将不起作用。它也必须存在于 PATH 中。可以从http://www.activestate.com下载二进制文件(注意:需要版本 5.8.3 或更高版本,免费的标准发行版就足够了)。
下列其他产品不是入门所需的,但它们是构建完整程序包所必需的。使用config.pl
文件来指定库所在的目录。
ActiveState TCL
- 构建 PL/Tcl 是必需的(注意:需要版本 8.4,免费的标准发行版就足够了)。
野牛和 Flex
- 从 Git 进行构建需要 Bison 和 Flex,而从发行文件进行构建则不需要 Bison 和 Flex。仅 Bison 1.875 或 2.2 版及更高版本有效。 Flex 必须为 2.5.31 或更高版本。
Bsys 和 Flex 都包含在 msys 工具套件中,可作为 MINGW 编译器套件的一部分从http://www.mingw.org/wiki/MSYS获得。
您需要将包含flex.exe
和bison.exe
的目录添加到buildenv.pl
中的 PATH 环境变量中,除非它们已经在 PATH 中。对于 MinGW,该目录是 MinGW 安装目录的\msys\1.0\bin
子目录。
Note
GnuWin32 的 Bison 发行版似乎存在一个错误,当将 Bison 安装在名称中带有空格的目录中时,例如在英语安装C:\Program Files\GnuWin32
的默认位置,该错误会导致 Bison 出现故障。考虑安装到C:\GnuWin32
或在 PATH 环境设置(例如C:\PROGRA~1\GnuWin32
)中使用 GFS 的 NTFS 短名称路径。
Note
在 64 位 Windows 主机上,在 PostgreSQL FTP 站点上分发并在较旧的文档中引用的过时的winflex
二进制文件将失败,并显示“ flex:致命内部错误,执行失败”。请改用 MSYS 中的 Flex。
Diff
- 运行回归测试需要 Diff,可以从http://gnuwin32.sourceforge.net下载。
Gettext
- 要使用 NLS 支持进行构建,必须使用 Gettext,可以从http://gnuwin32.sourceforge.net下载。请注意,都需要二进制文件,依赖项和开发人员文件。
MIT Kerberos
- GSSAPI 身份验证支持必需。可以从http://web.mit.edu/Kerberos/dist/index.html下载 MIT Kerberos。
libxml2 和 libxslt
- XML 支持所必需。二进制文件可以从http://zlatkovic.com/pub/libxml下载,也可以从http://xmlsoft.org下载。请注意,libxml2 需要 iconv,可从同一下载位置获得该图标。
openssl
- SSL 支持所必需。二进制文件可以从http://www.slproweb.com/products/Win32OpenSSL.html下载,也可以从http://www.openssl.org下载。
ossp-uuid
- 对于 UUID-OSSP 支持是必需的(仅贡献)。可以从http://www.ossp.org/pkg/lib/uuid/下载源。
Python
- 构建 PL/Python 所需。二进制文件可以从http://www.python.org下载。
zlib
- 对于 pg_dump 和 pg_restore 中的压缩支持是必需的。二进制文件可以从http://www.zlib.net下载。
17 .1.2. 64 位 Windows 的特殊注意事项
PostgreSQL 仅在 64 位 Windows 上针对 x64 架构构建,不支持 Itanium 处理器。
不支持在同一构建树中混合使用 32 位和 64 位版本。构建系统将自动检测它是否在 32 位或 64 位环境中运行,并相应地构建 PostgreSQL。因此,在构建之前启动正确的命令提示符很重要。
要使用服务器端第三方库(例如 python 或 openssl),该库必须也必须是 64 位的。不支持在 64 位服务器中加载 32 位库。 PostgreSQL 支持的几个第三方库可能仅在 32 位版本中可用,在这种情况下,它们不能与 64 位 PostgreSQL 一起使用。
17.1.3. Building
要以发布配置(默认)构建所有 PostgreSQL,请运行以下命令:
build
要在调试配置中构建所有 PostgreSQL,请运行以下命令:
build DEBUG
要仅构建一个项目(例如 psql),请运行以下命令:
build psql
build DEBUG psql
要将默认的构建配置更改为要调试,请将以下内容放在buildenv.pl
文件中:
$ENV{CONFIG}="Debug";
也可以从 Visual Studio GUI 内部进行构建。在这种情况下,您需要运行:
perl mkvcbuild.pl
在命令提示符下,然后在 Visual Studio 中打开生成的pgsql.sln
(在源树的根目录中)。
17 .1.4. 清洁与安装
大多数情况下,Visual Studio 中的自动依赖项跟踪将处理更改的文件。但是,如果进行了较大的更改,则可能需要清理安装。为此,只需运行clean.bat
命令,它将自动清除所有生成的文件。您也可以使用* dist
*参数运行它,在这种情况下,它的行为将像 make distclean
一样,并删除 flex/bison 输出文件。
默认情况下,所有文件都写入debug
或release
目录的子目录中。要使用标准布局安装这些文件,并生成初始化和使用数据库所需的文件,请运行以下命令:
install c:\destination\directory
如果只想安装 Client 端应用程序和接口库,则可以使用以下命令:
install c:\destination\directory client
17 .1.5. 运行回归测试
要运行回归测试,请确保首先完成了所有必需 Component 的构建。另外,请确保系统路径中存在加载系统所有部分所需的 DLL(例如过程语言的 Perl 和 Python DLL)。如果不是,请通过buildenv.pl
文件进行设置。要运行测试,请从src\tools\msvc
目录运行以下命令之一:
vcregress check
vcregress installcheck
vcregress plcheck
vcregress contribcheck
vcregress modulescheck
vcregress ecpgcheck
vcregress isolationcheck
vcregress bincheck
vcregress recoverycheck
vcregress upgradecheck
要更改使用的计划(默认为并行),请将其附加到命令行,如下所示:
vcregress check serial
有关回归测试的更多信息,请参见Chapter 32。
使用vcregress bincheck
在 Client 端程序上运行回归测试,或者使用vcregress recoverycheck
在恢复测试上运行回归测试,需要安装附加的 Perl 模块:
IPC::Run
- 在撰写本文时,ActiveState Perl 安装程序或 ActiveState Perl 程序包 Management 器(PPM)库中都不包含
IPC::Run
。要安装,请从 CPAN https://metacpan.org/release/IPC-Run/下载IPC-Run-<version>.tar.gz
源 Files,然后解压缩。编辑buildenv.pl
文件,并添加一个 PERL5LIB 变量以指向提取的存档中的lib
子目录。例如:
- 在撰写本文时,ActiveState Perl 安装程序或 ActiveState Perl 程序包 Management 器(PPM)库中都不包含
$ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib';
17 .1.6. 构建文件
以 HTML 格式构建 PostgreSQL 文档需要几个工具和文件。为所有这些文件创建一个根目录,并将它们存储在下面列表中的子目录中。
OpenJade 1.3.1-2
- 从http://sourceforge.net/projects/openjade/files/openjade/1.3.1/openjade-1_3_1-2-bin.zip/download下载并在子目录
openjade-1.3.1
中解压缩。
- 从http://sourceforge.net/projects/openjade/files/openjade/1.3.1/openjade-1_3_1-2-bin.zip/download下载并在子目录
DocBook DTD 4.2
- 从http://www.oasis-open.org/docbook/sgml/4.2/docbook-4.2.zip下载并在子目录
docbook
中解压缩。
- 从http://www.oasis-open.org/docbook/sgml/4.2/docbook-4.2.zip下载并在子目录
ISO 字符实体
- 从http://www.oasis-open.org/cover/ISOEnts.zip下载并在子目录
docbook
中解压缩。
- 从http://www.oasis-open.org/cover/ISOEnts.zip下载并在子目录
编辑buildenv.pl
文件,并为根目录的位置添加一个变量,例如:
$ENV{DOCROOT}='c:\docbook';
要生成文档,请运行命令builddoc.bat
。请注意,这实际上将运行两次构建,以生成索引。生成的 HTML 文件将位于doc\src\sgml
中。