PostgreSQL 10.1 手册_部分 III. 服务器管理_第 17 章 在Windows上从源代码安装_17.1. 使用Visual C++或Microsoft Windows SDK构建

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 17.1. 使用Visual C++或Microsoft Windows SDK构建 17.1.1. 要求 17.1.2. 针对64位Windows的特殊考虑 17.1.3. 构建 17.1.4. 清理和安装 17.1.5. 运行回归测试 17.1.6. 构建文档 PostgreSQL可以使用来自微软的Visual C++编译器套件构建。

17.1. 使用Visual C++Microsoft Windows SDK构建

PostgreSQL可以使用来自微软的Visual C++编译器套件构建。这些编译器可以来自于Visual StudioVisual Studio Express或者Microsoft Windows SDK的某些版本。如果你还没有准备好一个Visual Studio环境设置,最简单的方式是使用Visual Studio Express 2017 for Windows Desktop中的编译器,或者Windows SDK 8.1中的,两者都可以从微软免费下载。

使用微软编译器套件可以编译得到 32 位和 64 位版本。32 位的 PostgreSQL 可以使用 Visual Studio 2005至 Visual Studio 2017(包括精简版)编译, 单独的Windows SDK 6.0至8.1亦可。64位PostgreSQL的构建只被 Microsoft Windows SDK版本6.0a至8.1或 Visual Studio 2008及以上版本支持。 使用Visual Studio 2005至 Visual Studio 2013编译时最低支持 Windows XP和 Windows Server 2003。使用 Visual Studio 2015编译时最低支持 Windows VistaWindows Server 2008。 使用Visual Studio 2017编译时最低支持 Windows 7 SP1Windows Server 2008 R2 SP1

使用Visual C++Platform SDK构建的工具在src/tools/msvc目录中。在构建时,请确定在系统路径中没有来自于MinGW或的Cygwin工具。同样,确保所有需要的Visual C++工具都在PATH中。在Visual Studio中,启动Visual Studio Command Prompt。如果你希望构建一个64位版本,你必须使用64位版本的命令,反之亦然。在Microsoft Windows SDK中,启动该SDK在启动菜单中的CMD shell。在最近的SDK版本中你可以使用setenv命令改变目标CPU架构、构建类型以及目标OS,例如setenv /x86 /release /xp会设置为Windows XP或更高版本上的32位发布构建。使用/?来了解setenv的其他选项。所有命令应该从src\tools\msvc目录运行。

在开始构建之前,你还需要编辑文件config.pl来反映任何你想改变的配置选项,或者要使用的任何第三方库目录。完整的配置在第一次读取并解析文件config_default.pl时确定,然后应用config.pl中的任何改变。例如,要制定你的Python安装的位置,将下面的内容放在config.pl中:

$config->{python} = 'c:\python26';

你只需要指定那些和config_default.pl中不同的参数即可。

如果你希望设置任何其他环境变量,可创建一个名为buildenv.pl的文件并将需要的命令放在其中。例如,要把不在PATH中的bison路径加上,创建一个包含以下内容的文件:

$ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin';

传递更多的命令行参数到Visual Studio构建命令(msbuild 或 vcbuild):

$ENV{MSBFLAGS}="/m";

17.1.1. 要求

构建PostgreSQL时需要下列附加产品。使用config.pl文件来指定这些库所在的目录。

Microsoft Windows SDK

如果你的构建环境中没有一个受支持的Microsoft Windows SDK版本,推荐你升级到最新版(当前版本为7.1,可从https://www.microsoft.com/download下载)。

你必须总是包括SDK中的Windows头文件和库部分。如果你安装的是一个包括Visual C++ 编译器Windows SDK,构建时不需要Visual Studio。注意在版本8.0a,Windows SDK中不再包括一个完整的命令行构建环境。

ActiveState Perl

ActiveState Perl被用来运行构建生成脚本。MinGW或Cygwin Perl是不符合要求的。AcitveState Perl也必须存在于PATH中。其二进制文件可以从http://www.activestate.com下载(注意:需要版本5.8.3及以上,免费标准发布就足够了)。

下面的附加产品在开始时并不要求,但是如果要构建完整的包就需要它们。使用config.pl文件来指定这些库所在的目录。

ActiveState TCL

用于构建PL/Tcl(注意:要求版本8.4,免费标准发布即可)。

Bison和 Flex

BisonFlex用来从Git构建,但使用发行文件构建时可以不要求。只有Bison 1.875或2.2及以上才能正常工作。Flex则必须是版本2.5.31或以上。

BisonFlex 都包括在msys工具套件中,它作为 MinGW编译器套件的一部分可以从 http://www.mingw.org/wiki/MSYS得到。

你将需要把包含flex.exebison.exe 的目录加入到buildenv.pl中的PATH环境变量中, 除非它们已经存在于PATH中。在MinGW的情况下, 目录将是MinGW安装目录的\msys\1.0\bin子目录。

注意

来自GnuWin32的Bison发布似乎有一个故障,它会导致Bison安装于名称中有空格的目录时发生故障,例如英语安装的默认位置C:\Program Files\GnuWin32。考虑将它安装到C:\GnuWin32或者在PATH环境设置中使用NTFS段路径名(例如C:\PROGRA~1\GnuWin32)。

注意

在PostgreSQL的FTP站点上的以及被旧文档引用的老式winflex二进制程序在64位Windows主机上会出现flex: fatal internal error, exec failed的错误。请使用来自 MSYS 的 Flex。

Diff

Diff是回归测试所需要的,可以从http://gnuwin32.sourceforge.net得到。

Gettext

Gettext用于NLS支持,可以从http://gnuwin32.sourceforge.net得到。注意二进制程序、依赖文件以及开发者文件都需要。

MIT Kerberos

用于 GSSAPI 认证支持。MIT Kerberos可以从http://web.mit.edu/Kerberos/dist/index.html下载。

libxml2 and 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支持(contrib only)。源代码可以从http://www.ossp.org/pkg/lib/uuid/下载。

Python

用于构建PL/Python。二进制文件可以从http://www.python.org下载。

zlib

用于pg_dumppg_restore中的压缩支持。二进制文件可以从http://www.zlib.net下载。

17.1.2. 针对64位Windows的特殊考虑

在64位Windows上,PostgreSQL只能为x64架构构建,因此无法支持安腾处理器。

不支持在同一个构建树中混合32位和64位版本。构建系统会自动检测它运行在32位还是64位环境中,然后相应地构建PostgreSQL。鉴于此,在构建前启动正确的命令提示很重要。

要使用服务器端的第三方库如pythonopenssl,该库必须也是64位。在一个64位服务器上载入一个32位库是不被支持的。PostgreSQL支持的一些第三方库可能只有32位版本,在这种情况下它们就不能被用于64位PostgreSQL。

17.1.3. 构建

要在发行配置中构建PostgreSQL的所有部分(默认),运行命令:

build

要在调试配置中构建PostgreSQL的所有部分,运行命令:

build DEBUG

要构建单独一个对象,例如psql,运行命令:

build psql
build DEBUG psql

要将默认的构建配置改变成调试,将下面的内容放在buildenv.pl文件中:

$ENV{CONFIG}="Debug";

也可以在Visual Studio的图形界面中进行构建。在这种情况下,你需要在命令提示符下运行:

perl mkvcbuild.pl

然后在Visual Studio中打开生成的pgsql.sln(在源代码树的根目录中)。

17.1.4. 清理和安装

在大部分时间里,Visual Studio的自动依赖跟踪会处理发生改变的文件。但是如果发生了大量的改变,你也许需要清理整个安装。为此,只要运行clean.bat命令,它将会自动清除所有生成的文件。你也可以使用dist参数运行它,这种情况下它的效果和make distclean一样,并且会移除flex/bison的输出文件。

默认情况下,所有的文件都被写入到名为debugrelease的子目录中。要将这些文件以标准布局进行安装并且生成初始化和使用数据库所需的文件 ,运行命令:

install c:\destination\directory

如果你想只安装客户端应用和接口库,那么你可以使用这些命令:

install c:\destination\directory client

17.1.5. 运行回归测试

要运行回归测试,确保你已经完成了所有所需部分的构建。另外,确保载入整个系统所需的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

关于回归测试详见第 32 章

vcregress bincheckvcregress recoverycheck 分别可以运行客户端程序上的回归测试和恢复测试,这要求 安装了额外的 Perl 模块:

IPC::Run

从编写这份文档时起,IPC::Run没有被包括在 ActiveState Perl 安装或者 ActiveState Perl Package Manager (PPM) 库中。要安装,请从 CPAN (在http://search.cpan.org/dist/IPC-Run/)下载 IPC-Run-<version>.tar.gz源代码归档并且解压。 编辑buildenv.pl文件,并且增加一个 PERL5LIB 变量 指向解压得到的归档中的lib子目录。例如:

$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子目录。

DocBook DTD 4.2

http://www.oasis-open.org/docbook/sgml/4.2/docbook-4.2.zip下载并解压到docbook子目录。

ISO字符实体

http://www.oasis-open.org/cover/ISOEnts.zip下载并解压到docbook子目录。

编辑buildenv.pl文件,为根目录的位置增加一个变量,例如:

$ENV{DOCROOT}='c:\docbook';

要构建文档,运行命令builddoc.bat。注意这实际会运行构建两次以生成索引。生成好的HTML文件将在doc\src\sgml中。

本文转自PostgreSQL中文社区,原文链接:17.1. 使用Visual C++Microsoft Windows SDK构建

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
4月前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
Windows
Microsoft Visual C++2015-2019 安装失败 0x80240017
Microsoft Visual C++2015-2019 安装失败 0x80240017
130 0
|
2月前
|
编译器 开发工具 C++
【Python】已解决error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build
【Python】已解决error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build
424 0
|
3月前
|
存储 分布式数据库 API
技术好文:VisualC++查看文件被哪个进程占用
技术好文:VisualC++查看文件被哪个进程占用
|
17天前
|
安全 编译器 C++
Microsoft Visual C++ Redistributable的作用主要体现以及可以删除吗?
这些是Microsoft Visual C++不同版本的Redistributable安装包,用于32位系统,确保相关应用正常运行。它们提供C++运行时环境,简化部署流程,支持第三方库及框架,并确保应用兼容性。定期更新可修复问题并引入新功能。在空间有限或需解决程序冲突时可考虑删除,但需谨慎操作以防影响应用稳定性和兼容性。删除前请确认无应用依赖,并通过控制面板安全卸载。
45 1
Microsoft Visual C++ Redistributable的作用主要体现以及可以删除吗?
|
25天前
|
编解码 开发工具 C#
[大牛直播SDK]Windows平台RTMP直播推送模块功能设计
大牛直播SDK采用全自研框架,具备高度可扩展性与自适应算法,显著降低延迟并提高采集编码效率。SDK以模块化设计,支持RTMP推流及多种音视频编码格式(如AAC、SPEEX、H.264、H.265),并能与播放器SDK组合实现丰富功能,包括流媒体转发、内置RTSP服务等。提供了详尽的参数配置选项,支持多摄像头、屏幕采集与水印叠加,并兼容Windows 7及以上操作系统。该SDK以C++/C#双接口形式提供,集成简便,同时包含调试与发布版本库,便于开发者快速上手。此外,支持断网重连、实时预览及多种编码前后的数据对接需求。
|
2月前
|
C++ Windows
FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
在Windows上使用Visual Studio 2022进行FFmpeg和SDL2集成开发,首先安装FFmpeg至E:\msys64\usr\local\ffmpeg,然后新建C++控制台项目。在项目属性中,添加FFmpeg和SDL2的头文件及库文件目录。接着配置链接器的附加依赖项,包括多个FFmpeg及SDL2的lib文件。在代码中引入FFmpeg的`av_log`函数输出"Hello World",编译并运行,若看到"Hello World",即表示集成成功。详细步骤可参考《FFmpeg开发实战:从零基础到短视频上线》。
64 0
FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
|
29天前
|
移动开发 JavaScript Java
windows7下安装配置phonegap3.0 (cordavo)开发环境 (涉及android sdk配置)
windows7下安装配置phonegap3.0 (cordavo)开发环境 (涉及android sdk配置)
|
30天前
|
缓存 C++ Windows
Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
|
1月前
|
编译器 C++ 开发者
Visual Studio属性表:在新项目中加入已配置好的C++库
通过以上步骤可以确保Visual Studio中新项目成功地加入了之前已配置好的C++库。这个过程帮助开发者有效地管理多个项目中共享的库文件,提升开发效率。
40 0
下一篇
DDNS