首页教程PostgreSQL

Autoconf和Make构建安装

使用 Autoconf 和 Make 进行构建和安装

简短版本

要快速安装 PostgreSQL,您可以按照以下步骤操作:

./configure make su make install adduser postgres mkdir -p /usr/local/pgsql/data chown postgres /usr/local/pgsql/data su - postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start /usr/local/pgsql/bin/createdb test /usr/local/pgsql/bin/psql test

这是快速安装 PostgreSQL 的基本步骤,后续将提供更详细的说明。

安装过程

  1. 配置 安装过程的第一步是为您的系统配置源代码树并选择所需的选项。这是通过运行 configure 脚本来完成的。要进行默认安装,只需输入:

    ./configure

    该脚本将运行一系列测试以确定各种系统依赖变量的值,并检测操作系统的任何特性,最终在构建树中创建几个文件以记录发现的内容。

    如果您希望将构建目录与原始源文件分开,也可以在源树外的目录中运行 configure,然后在那里构建,这种过程称为 VPATH 构建。操作如下:

    mkdir build_dir cd build_dir /path/to/source/tree/configure [options go here] make

    默认配置将构建服务器和实用程序,以及所有只需要 C 编译器的客户端应用程序和接口。所有文件将默认安装到 /usr/local/pgsql 下。

    您可以通过向 configure 提供一个或多个命令行选项来定制构建和安装过程。通常,您会自定义安装位置或构建的可选功能集。

  2. 构建 要开始构建,输入以下任意一条命令:

    make make all

    (请记得使用 GNU make。)构建过程将根据您的硬件需要几分钟时间。

    如果您希望构建所有可以构建的内容,包括文档(HTML 和手册页)以及附加模块(contrib),请改为输入:

    make world

    如果您希望构建所有可以构建的内容,包括附加模块(contrib),但不包含文档,请输入:

    make world-bin

    如果您希望从另一个 makefile 调用构建,而不是手动进行,则必须取消设置 MAKELEVEL 或将其设置为零,例如:

    build-postgresql: $(MAKE) -C postgresql MAKELEVEL=0 all

    如果不这样做,可能会导致奇怪的错误消息,通常与缺少头文件有关。

  3. 回归测试 如果您希望在安装之前测试新构建的服务器,可以在此时运行回归测试。回归测试是一个测试套件,用于验证 PostgreSQL 在您的机器上按照开发人员预期的方式运行。输入:

    make check

    (这不能以 root 用户身份运行;请以非特权用户身份执行。)有关如何解释测试结果的详细信息,请参见 第 31 章。您可以在以后的任何时间通过发出相同的命令重复此测试。

  4. 安装文件 (后续步骤将在这里继续说明安装文件的具体方法。)

注意

如果您正在升级现有系统,请务必阅读 第 18.6 节,其中包含关于升级集群的说明。

要安装 PostgreSQL,请输入:

make install

这将把文件安装到在 步骤 1 中指定的目录中。确保您具有在该区域写入的适当权限。通常,您需要以 root 用户身份执行此步骤。或者,您可以提前创建目标目录并安排适当的权限。

要安装文档(HTML 和手册页),请输入:

make install-docs

如果您上面构建了整个系统,请输入:

make install-world

这也会安装文档。

如果您上面构建了不包含文档的系统,请输入:

make install-world-bin

您可以使用 make install-strip 来代替 make install,以在安装时去除可执行文件和库的调试信息。这将节省一些空间。如果您使用调试支持构建,去除调试信息会有效地删除调试支持,因此仅在不再需要调试时执行此操作。install-strip 会尽量节省空间,但它对如何去除每个不必要的字节并没有完美的知识,因此如果您想尽可能节省磁盘空间,可能需要进行手动工作。

标准安装提供了所有所需的头文件,用于客户端应用程序开发以及服务器端程序开发,例如用 C 编写的自定义函数或数据类型。

仅客户端安装: 如果您只想安装客户端应用程序和接口库,可以使用以下命令:

make -C src/bin install make -C src/include install make -C src/interfaces install make -C doc install

src/bin 目录中有一些仅供服务器使用的小型二进制文件。

卸载: 要撤销安装,请使用命令 make uninstall。但是,这不会删除任何创建的目录。

清理: 安装后,您可以通过使用命令 make clean 从源树中删除构建文件来释放磁盘空间。这将保留 configure 程序生成的文件,以便您以后可以使用 make 重新构建所有内容。要将源树重置为分发时的状态,请使用 make distclean。如果您打算在同一源树中为多个平台构建,必须执行此操作并为每个平台重新配置。(或者,为每个平台使用单独的构建树,以保持源树不被修改。)

如果您执行了构建,然后发现您的 configure 选项错误,或者更改了 configure 所检查的任何内容(例如,软件升级),那么在重新配置和重建之前执行 make distclean 是一个好主意。否则,您对配置选项的更改可能不会传播到所需的所有地方。

configure 选项

configure 的命令行选项如下所述。这个列表并不详尽(使用 ./configure --help 获取完整选项)。未涵盖的选项主要用于高级用例,例如交叉编译,并在标准 Autoconf 文档中有详细说明。

安装位置

这些选项控制 make install 将文件放置的位置。--prefix 选项对大多数情况是足够的。如果您有特殊需求,可以使用本节中描述的其他选项自定义安装子目录。但请注意,改变不同子目录的相对位置可能会导致安装不可移动,这意味着您无法在安装后移动它。(mandoc 位置不受此限制。)对于可移动的安装,您可能希望使用后面描述的 --disable-rpath 选项。

--prefix=<PREFIX> 安装所有文件到 PREFIX 目录下,而不是 /usr/local/pgsql。实际文件将安装到各种子目录中;不会有文件直接安装到 PREFIX 目录。

--exec-prefix=<EXEC-PREFIX> 您可以将架构依赖的文件安装到与 PREFIX 不同的前缀 EXEC-PREFIX 下。这对于在主机之间共享架构无关的文件很有用。如果省略此选项,则 EXEC-PREFIX 将设置为 PREFIX,架构依赖和无关的文件将安装在同一树下,这通常是您想要的。

--bindir=<DIRECTORY> 指定可执行程序的目录。默认值为 <EXEC-PREFIX>/bin,通常是 /usr/local/pgsql/bin

--sysconfdir=<DIRECTORY> 设置各种配置文件的目录,默认是 <PREFIX>/etc

--libdir=<DIRECTORY> 设置安装库和动态加载模块的位置。默认是 <EXEC-PREFIX>/lib

--includedir=<DIRECTORY> 设置安装 C 和 C++ 头文件的目录。默认是 <PREFIX>/include

--datarootdir=<DIRECTORY> 设置各种类型只读数据文件的根目录。此选项仅设置以下某些选项的默认值。默认值为 <PREFIX>/share

--datadir=<DIRECTORY> 设置已安装程序使用的只读数据文件的目录。默认值为 <DATAROOTDIR>。请注意,这与您的数据库文件存放位置无关。

--localedir=<DIRECTORY> 设置安装区域数据的目录,特别是消息翻译目录文件。默认值为 <DATAROOTDIR>/locale

--mandir=<DIRECTORY>PostgreSQL 提供的手册页将安装在此目录下,并按各自的 man<x> 子目录分类。默认值为 <DATAROOTDIR>/man

--docdir=<DIRECTORY> 设置安装文档文件(除 “man” 页外)的根目录。此选项仅设置以下选项的默认值。此选项的默认值为 <DATAROOTDIR>/doc/postgresql

--htmldir=<DIRECTORY> PostgreSQL 的 HTML 格式文档将安装在此目录下。默认值为 <DATAROOTDIR>

注意

在安装 PostgreSQL 时,特别注意使其能够安装到共享安装位置(如 /usr/local/include),而不会干扰系统的其他命名空间。首先,字符串 /postgresql” 会自动附加到 datadirsysconfdirdocdir,除非完全扩展的目录名已包含字符串 postgres” 或 pgsql**。例如,如果选择 /usr/local 作为前缀,文档将安装在 /usr/local/doc/postgresql 中,但如果前缀是 /opt/postgres,则将安装在 /opt/postgres/doc 中。客户端接口的公共 C 头文件将安装到 includedir 中,并保持命名空间的干净。内部头文件和服务器头文件将安装在 includedir 下的私有目录中。有关如何访问其头文件的信息,请参阅每个接口的文档。最后,如果适用,libdir 下也会创建一个私有子目录,以存放动态可加载模块。

17.3.3.2. PostgreSQL 特性

本节中描述的选项启用构建各种默认不构建的 PostgreSQL 特性。大多数这些特性之所以不是默认构建,是因为它们需要额外的软件

--enable-nls[=<LANGUAGES>] 启用本地语言支持(NLS),即能够以英语以外的语言显示程序的消息。LANGUAGES 是一个可选的以空格分隔的语言代码列表,例如 --enable-nls='de fr'。(您列表中的语言与实际提供的翻译集的交集将自动计算。)如果不指定列表,则会安装所有可用的翻译。

要使用此选项,您需要有 Gettext API 的实现。

``--with-perl` 构建 PL/Perl 服务器端语言。

--with-python 构建 PL/Python 服务器端语言。

--with-tcl 构建 PL/Tcl 服务器端语言。

--with-tclconfig=<DIRECTORY> Tcl 安装了文件 tclConfig.sh,该文件包含构建与 Tcl 接口的模块所需的配置信息。此文件通常在一个已知位置自动找到,但如果您想使用不同版本的 Tcl,可以指定查找 tclConfig.sh 的目录。

--with-llvm 构建支持 LLVM 基于 JIT 编译(见 第 30 章")). 这需要安装 LLVM 库。当前所需的 LLVM 最低版本为 10。

llvm-config 将用于查找所需的编译选项。llvm-config 将在您的 PATH 中查找。如果未能找到所需程序,请使用 LLVM_CONFIG 指定正确的 llvm-config 路径。例如:

./configure ... --with-llvm LLVM_CONFIG='/path/to/llvm/bin/llvm-config'

LLVM 支持需要兼容的 clang 编译器(如有必要,使用 CLANG 环境变量指定),以及工作中的 C++ 编译器(如有必要,使用 CXX 环境变量指定)。

--with-lz4 构建支持 LZ4 压缩。

--with-zstd 构建支持 Zstandard 压缩。

--with-ssl=<LIBRARY> 构建支持 SSL(加密)连接。唯一支持的 LIBRARYopenssl。这需要安装 OpenSSL 包。configure 将检查所需的头文件和库,以确保您的 OpenSSL 安装足够。

--with-openssl 过时的等效于 --with-ssl=openssl

--with-gssapi 构建支持 GSSAPI 身份验证。需要安装 MIT Kerberos。许多系统的 GSSAPI 系统(MIT Kerberos 安装的一部分)并不在默认搜索的位置(如 /usr/include/usr/lib),因此您必须使用 --with-includes--with-libraries 选项。此外,configure 将检查所需的头文件和库,以确保您的 GSSAPI 安装足够。

--with-ldap 构建支持 LDAP 进行身份验证和连接参数查找, 在 Unix 上,这需要安装 OpenLDAP 包。在 Windows 上,使用默认的 WinLDAP 库。configure 将检查所需的头文件和库,以确保您的 OpenLDAP 安装足够。

--with-pam 构建支持 PAM(可插拔身份验证模块)。

--with-bsd-auth 构建支持 BSD 身份验证。(BSD 身份验证框架目前仅在 OpenBSD 上可用。)

--with-systemd 构建支持 systemd 服务通知。如果服务器在 systemd 下启动,这将改善集成,但在其他情况下没有影响;使用此选项需要安装 libsystemd 及相关头文件。

--with-bonjour 构建支持 Bonjour 自动服务发现。这要求您的操作系统支持 Bonjour。在 macOS 上推荐使用。

--with-uuid=<LIBRARY> 构建 uuid-ossp 模块(提供生成 UUID 的函数),使用指定的 UUID 库。LIBRARY 必须是以下之一:

  • bsd 使用在 FreeBSD 和其他一些 BSD 派生系统中找到的 UUID 函数
  • e2fs 使用 e2fsprogs 项目创建的 UUID 库;此库在大多数 Linux 系统和 macOS 中存在,也可以为其他平台获取
  • ossp 使用 OSSP UUID 库

--with-ossp-uuid 过时的等效于 --with-uuid=ossp

--with-libxml 构建使用 libxml2,启用 SQL/XML 支持。此功能要求 libxml2 版本为 2.6.23 或更高。

为了检测所需的编译器和链接器选项,PostgreSQL 将查询 pkg-config,如果安装并了解 libxml2。如果未安装,则将使用 libxml2 提供的 xml2-config 程序(如果找到)。建议使用 pkg-config,因为它可以更好地处理多架构安装。

要使用位于非常规位置的 libxml2 安装,可以设置与 pkg-config 相关的环境变量(见其文档),或者将环境变量 XML2_CONFIG 设置为指向 libxml2 安装的 xml2-config 程序,或者设置变量 XML2_CFLAGSXML2_LIBS。如果安装了 pkg-config,则要覆盖它对 libxml2 位置的认知,必须设置 XML2_CONFIG 或将 XML2_CFLAGSXML2_LIBS 都设置为非空字符串。

--with-libxslt 构建使用 libxslt,启用 xml2 模块以执行 XML 的 XSL 转换。必须同时指定 --with-libxml

--with-selinux 构建支持 SElinux,启用 sepgsql security module") 扩展。

反特性

本节描述的选项允许禁用某些默认构建的 PostgreSQL 特性,但在所需的软件或系统特性不可用时可能需要关闭。除非确实必要,不建议使用这些选项。

--without-icu 构建时不支持 ICU 库,禁用 ICU 排序特性

--without-readline 阻止使用 Readline 库(以及 libedit)。此选项禁用 psql 的命令行编辑和历史功能。

--with-libedit-preferred 优先使用 BSD 许可的 libedit 库而非 GPL 许可的 Readline。仅当同时安装了这两个库时,此选项才有意义;在这种情况下,默认使用 Readline

--without-zlib 阻止使用 Zlib 库。这将禁用 pg_dumppg_restore 中对压缩归档的支持。

--disable-spinlocks 允许构建成功,即使 PostgreSQL 对于该平台没有 CPU 自旋锁支持。缺少自旋锁支持将导致性能非常差;因此,仅当构建因告知缺少自旋锁支持而中止时,才应使用此选项。如果在您的平台上需要此选项来构建 PostgreSQL,请向 PostgreSQL 开发人员报告此问题。

--disable-atomics 禁用使用 CPU 原子操作。对于缺少此类操作的平台,此选项无效。在具有此功能的平台上,这将导致性能下降。此选项仅用于调试或进行性能比较。

构建过程详细信息

--with-includes=<DIRECTORIES> 是一个以冒号分隔的目录列表,将添加到编译器查找头文件的列表中。如果您在非标准位置安装了可选包(例如 GNU Readline),则必须使用此选项,通常还需要对应的 --with-libraries 选项。

示例:--with-includes=/opt/gnu/include:/usr/sup/include

--with-libraries=<DIRECTORIES> 是一个以冒号分隔的目录列表,用于查找库。如果您在非标准位置安装了包,通常必须使用此选项(以及对应的 --with-includes 选项)。

示例:--with-libraries=/opt/gnu/lib:/usr/sup/lib

--with-system-tzdata=<DIRECTORY> PostgreSQL 包含自己的时区数据库,这是进行日期和时间操作所需的。这个时区数据库实际上与许多操作系统(如 FreeBSD、Linux 和 Solaris)提供的 IANA 时区数据库兼容,因此重新安装是多余的。当使用此选项时,系统提供的时区数据库将位于 DIRECTORY 中,而不是 PostgreSQL 源分发中包含的数据库。DIRECTORY 必须指定为绝对路径。在某些操作系统上,/usr/share/zoneinfo 是一个可能的目录。请注意,安装程序不会检测不匹配或错误的时区数据。如果使用此选项,建议您运行回归测试以验证所指向的时区数据与 PostgreSQL 是否正常工作。

此选项主要面向对目标操作系统了解透彻的二进制包分发者。使用此选项的主要优点是,当许多本地夏令时规则发生变化时,PostgreSQL 包无需升级。另一个优点是,如果在安装期间不需要构建时区数据库文件,PostgreSQL 可以更直接地进行交叉编译。

--with-extra-version=<STRING>STRING 附加到 PostgreSQL 版本号。您可以使用此选项,例如,为从未发布的 Git 快照构建的二进制文件或包含自定义补丁的文件标记附加版本字符串,如 git describe 标识符或发行包版本号。

--disable-rpath 不标记 PostgreSQL 的可执行文件,指示它们应在安装的库目录中搜索共享库(参见 --libdir)。在大多数平台上,此标记使用库目录的绝对路径,因此如果您稍后重新定位安装,这将没有帮助。但是,您需要提供其他方式让可执行文件找到共享库。通常,这需要配置操作系统的动态链接器以搜索库目录;

杂项

调整默认端口号 --with-pgport 是很常见的,特别是在测试构建中。此部分中的其他选项仅推荐给高级用户。

--with-pgport=<NUMBER> 设置 NUMBER 为服务器和客户端的默认端口号。默认端口为 5432。端口可以在后期更改,但如果您在此处指定,则服务器和客户端都将编译相同的默认值,这非常方便。选择非默认值的唯一合理原因通常是如果您打算在同一台机器上运行多个 PostgreSQL 服务器。

--with-krb-srvnam=<NAME> Kerberos 服务主体的默认名称,用于 GSSAPI。默认值为 postgres。通常没有理由更改此值,除非您是在为 Windows 环境构建,此时必须设置为大写 POSTGRES

--with-segsize=<SEGSIZE> 设置 段大小,以千兆字节为单位。大型表将被划分为多个操作系统文件,每个文件的大小等于段大小。这可以避免在许多平台上存在的文件大小限制。默认段大小为 1 千兆字节,在所有受支持的平台上都安全。如果您的操作系统支持 “largefile”(现在大多数都支持),您可以使用更大的段大小。这有助于在处理非常大表时减少消耗的文件描述符数量。但请注意,不要选择超出您平台和打算使用的文件系统支持的值。您可能希望使用的其他工具,例如 tar,也可能设置可用文件大小的限制。建议(尽管不是绝对要求)此值为 2 的幂。请注意,改变此值会破坏磁盘上的数据库兼容性,这意味着您不能使用 pg_upgrade 升级到具有不同段大小的构建。

--with-blocksize=<BLOCKSIZE> 设置 块大小,以千字节为单位。这是表中的存储和 I/O 单位。默认值为 8 千字节,适用于大多数情况;但在特殊情况下,其他值可能有用。值必须是 1 到 32(千字节)之间的 2 的幂。请注意,改变此值会破坏磁盘上的数据库兼容性,这意味着您不能使用 pg_upgrade 升级到具有不同块大小的构建。

--with-wal-blocksize=<BLOCKSIZE> 设置 WAL 块大小,以千字节为单位。这是 WAL 日志中的存储和 I/O 单位。默认值为 8 千字节,适用于大多数情况;但在特殊情况下,其他值可能有用。值必须是 1 到 64(千字节)之间的 2 的幂。请注意,改变此值会破坏磁盘上的数据库兼容性,这意味着您不能使用 pg_upgrade 升级到具有不同 WAL 块大小的构建。

开发者选项

本节中的大多数选项仅对开发或调试 PostgreSQL 感兴趣。除非确有必要,否则不建议在生产构建中使用这些选项,--enable-debug 除外,该选项在遇到错误时可以启用详细的错误报告。在支持 DTrace 的平台上,--enable-dtrace 在生产环境中使用也是合理的。

在构建将用于开发服务器内部代码的安装时,建议至少使用 --enable-debug--enable-cassert 选项。

--enable-debug 通过调试符号编译所有程序和库。这意味着您可以在调试器中运行程序以分析问题。这会显著增加已安装可执行文件的大小,并且在非 GCC 编译器上通常也会禁用编译器优化,从而导致性能下降。然而,拥有这些符号对于处理可能出现的任何问题极其有帮助。目前,只有在使用 GCC 时才建议在生产安装中使用此选项。如果您正在进行开发工作或运行测试版,始终应启用此选项。

--enable-cassert 在服务器中启用 断言 检查,用于测试许多 “不可能发生” 的条件。这在代码开发中非常重要,但测试可能会显著降低服务器的性能。此外,启用这些测试并不会一定增强服务器的稳定性!断言检查不按严重程度分类,因此相对无害的错误仍然会导致服务器重启(如果触发断言失败)。此选项不建议用于生产,但在开发工作或运行测试版时应启用。

--enable-tap-tests 启用使用 Perl TAP 工具的测试。这需要 Perl 安装及 Perl 模块 IPC::Run。有关更多信息,请参见 第 31.4 节。

--enable-depend 启用自动依赖跟踪。使用此选项,makefile 将设置为在任何头文件更改时重新构建所有受影响的目标文件。这在进行开发工作时很有用,但如果您仅打算编译一次并安装,这只是浪费开销。目前,此选项仅适用于 GCC。

--enable-coverage 如果使用 GCC,所有程序和库将编译为代码覆盖测试仪器。当运行时,它们将在构建目录中生成包含代码覆盖指标的文件。

--enable-profiling 如果使用 GCC,所有程序和库将编译为可以进行分析。后端退出时,将创建一个子目录,包含包含配置文件数据的 gmon.out 文件。此选项仅适用于 GCC 和开发工作。

--enable-dtrace 编译 PostgreSQL 以支持动态跟踪工具 DTrace。

要指向 dtrace 程序,可以设置环境变量 DTRACE。这通常是必要的,因为 dtrace 通常安装在 /usr/sbin 下,可能不在您的 PATH 中。

可以在环境变量 DTRACEFLAGS 中指定 dtrace 程序的额外命令行选项。在 Solaris 上,要在 64 位二进制文件中包含 DTrace 支持,必须指定 DTRACEFLAGS="-64"。例如,使用 GCC 编译器:

./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...

使用 Sun 的编译器:

./configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' ...

--enable-injection-points 编译 PostgreSQL 以支持服务器中的注入点。注入点允许在预定义的代码路径中从服务器内部运行用户定义的代码。这有助于测试和以受控方式调查并发场景。此选项默认禁用。

--with-segsize-blocks=SEGSIZE_BLOCKS 指定关系段大小(以块为单位)。如果同时指定了 --with-segsize 和此选项,则此选项优先。此选项仅适用于开发人员,以测试与段相关的代码。

configure 环境变量

除了上述普通的命令行选项外,configure 还响应多个环境变量。您可以在 configure 命令行中指定环境变量,例如:

./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'

在这种用法中,环境变量与命令行选项的区别不大。您也可以提前设置这些变量:

export CC=/opt/bin/gcc export CFLAGS='-O2 -pipe' ./configure

这种用法非常方便,因为许多程序的配置脚本以类似方式响应这些变量。

最常用的环境变量包括 CCCFLAGS。如果您希望使用不同于 configure 默认选择的 C 编译器,可以将变量 CC 设置为您选择的程序。默认情况下,configure 将选择可用的 gcc,否则选择平台的默认编译器(通常是 cc)。同样,如果需要,您可以使用 CFLAGS 变量覆盖默认的编译器标志。

以下是可以以这种方式设置的重要变量列表:

  • BISON Bison 程序
  • CC C 编译器
  • CFLAGS 传递给 C 编译器的选项
  • CLANG 用于处理源代码以实现内联的 clang 程序路径,前提是使用 --with-llvm
  • CPP C 预处理器
  • CPPFLAGS 传递给 C 预处理器的选项
  • CXX C++ 编译器
  • CXXFLAGS 传递给 C++ 编译器的选项
  • DTRACE dtrace 程序的位置
  • DTRACEFLAGS 传递给 dtrace 程序的选项
  • FLEX Flex 程序
  • LDFLAGS 链接可执行文件或共享库时使用的选项
  • LDFLAGS_EX 仅用于链接可执行文件的附加选项
  • LDFLAGS_SL 仅用于链接共享库的附加选项
  • LLVM_CONFIG llvm-config 程序,用于查找 LLVM 安装
  • MSGFMT 用于本地语言支持的 msgfmt 程序
  • PERL Perl 解释器程序。用于确定构建 PL/Perl 的依赖关系。默认是 perl
  • PYTHON Python 解释器程序。用于确定构建 PL/Python 的依赖关系。如果未设置,将按以下顺序探测:python3 python
  • TCLSH Tcl 解释器程序。用于确定构建 PL/Tcl 的依赖关系。如果未设置,将按以下顺序探测:tclsh tcl tclsh8.6 tclsh86 tclsh8.5 tclsh85 tclsh8.4 tclsh84
  • XML2_CONFIG xml2-config 程序,用于查找 libxml2 安装

有时,在 configure 选择的选项之后添加编译器标志是有用的。一个重要的例子是 gcc-Werror 选项不能包含在传递给 configureCFLAGS 中,因为它会破坏许多 configure 的内置测试。要添加这样的标志,请在运行 make 时将其包含在 COPT 环境变量中。COPT 的内容将添加到 configure 设置的 CFLAGSLDFLAGS 选项中。例如,您可以这样做:

make COPT='-Werror'

或者

export COPT='-Werror' make

注意

如果使用 GCC,最好以至少 -O1 的优化级别进行构建,因为不使用优化(-O0)会禁用一些重要的编译器警告(例如,使用未初始化的变量)。然而,非零优化级别可能会使调试变得复杂,因为逐步调试编译代码通常无法与源代码行逐一对应。如果在调试优化代码时感到困惑,请用 -O0 重新编译特定文件。这样做的简单方法是通过传递选项给 makemake PROFILE=-O0 file.o

COPTPROFILE 环境变量实际上由 PostgreSQL 的 makefile 相同地处理。使用哪个是个人偏好,开发人员常用 PROFILE 进行一次性标志调整,而 COPT 则可能一直保持设置。