如何使用 zlibwapi 而不是 zlib 来编译 PostgreSQL?

How to use zlibwapi instead of zlib for compiling PostgreSQL?

对于 PostgreSQL,我在 msvc 2022 上编译了 zlib 1.2.11。编译 zlib 后,我得到了以下文件列表。

 Directory of C:\Users\Documents\zlib_build\zlib-1.2.11\contrib\vstudio\vc14\x86\ZlibDllRelease

02/04/2022  11:33 AM    <DIR>          .
02/04/2022  11:33 AM    <DIR>          ..
02/04/2022  11:33 AM    <DIR>          Tmp
02/04/2022  11:33 AM           143,360 vc143.pdb
02/04/2022  11:33 AM           422,912 zlibwapi.dll
02/04/2022  11:33 AM            16,800 zlibwapi.exp
02/04/2022  11:33 AM            28,330 zlibwapi.lib
02/04/2022  11:33 AM           759,073 zlibwapi.map
02/04/2022  11:33 AM         6,696,960 zlibwapi.pdb
               6 File(s)      8,067,435 bytes
               3 Dir(s)  24,997,359,616 bytes free

但是当我使用上面的 Zlib 库编译 PostgreSQL 时,出现以下错误。

  LINK : fatal error LNK1181: cannot open input file 'C:\library\zlib_build\ZlibDllRelease\lib\zdll.lib' 

这是我第一次编译 Zlib 库,我是否遗漏了获得 zdll.lib 文件的任何步骤。或者我是否需要更改与 Postgres 编译相关的任何内容,以便它使用 zlibwapi.lib?

我找不到绕过 zlibwapi 的方法,但找到了一种更简单的方法来构建 zlib(1.2.11) 库。

  1. 从 Visual studio 打开“开发人员命令提示符”。
  2. 转到解压缩源的主 zlib 目录,然后运行使用以下命令构建它。

nmake -f win32/Makefile.msc

这个命令可以在win32/Makefile.msc

中找到

在那里我们会得到当前目录下所有与zlib相关的库文件。 此外,如果需要,创建一个单独的目录(zlib_build)并将文件复制到各自的目录,如下所示。

zlib_build\lib -> zdll.*, zlib.*
zlib_build\bin -> zlib1.*
zlib_build\include -> zlib.h, zconf.h

在路径中使用这个后,我成功构建了PostgreSQL。