当前位置: 首页 > news >正文

windows 上编译PostgreSQL

在windows上编译PG,编译器可以使用vs和MinGW的gcc进行编译。

编译前准备:

Microsoft Windows SDK

Strawberry Perl   //提供Perl的支持,内部还包括gcc

Bison和Flex(不同的PG需要不通的版本,具体需要查看帮助文档)

安装Bison和Flex目录不要选择默认的c:\program files,因为目录中间有空格,后续编译会报错,PG的文档中有记录,建议安装在没有空格的目录中,比如c:\GnuWin32目录中

可以使用win_bison.exe和win_flex.exe

工程构造工具以及编译步骤

PG16之前,包括16,使用Perl进行项目构造后进行编译,具体配置信息在src/tools/msvc目录中。

具体步骤:

1. 安装vs的community版本。

2. 开始菜单,选择VS -> X64 native command tools  

3. cd进入src/tools/msvc

4. 执行build configuration component 

build release psql (编译plsq的release版本)  默认编译文件放在release目录中

build debug (编译所有的debug版本) ,默认编译文件放在Debug目录中

同时会在msvc目录中创建一个pgsql.sln工程文件,可以直接使用vs打开后进行编译。

5. 如果需要添加组件,比如支持openSSL,libxml等等,可以打开

msvc目录中的config_deafult.pl文件,添加相应的组件,如下面的内容,我添加了对Openssl和iconv的支持


# Copyright (c) 2021-2023, PostgreSQL Global Development Group# Configuration arguments for vcbuild.
use strict;
use warnings;our $config = {asserts => 0,    # --enable-cassert# blocksize => 8,         # --with-blocksize, 8kB by default# wal_blocksize => 8,     # --with-wal-blocksize, 8kB by defaultldap => 1,             # --with-ldapextraver => undef,     # --with-extra-version=<string>gss => undef,          # --with-gssapi=<path>icu => undef,          # --with-icu=<path>lz4 => undef,          # --with-lz4=<path>zstd => undef,         # --with-zstd=<path>nls => undef,          # --enable-nls=<path>tap_tests => undef,    # --enable-tap-teststcl => undef,          # --with-tcl=<path>perl => undef,         # --with-perl=<path>python => undef,       # --with-python=<path>openssl => 'C:\Program Files\OpenSSL-Win64',      # --with-ssl=openssl with <path>uuid => undef,         # --with-uuid=<path>xml => undef,          # --with-libxml=<path>xslt => undef,         # --with-libxslt=<path>iconv => 'C:\Program Files\GnuWin32',        # (not in configure, path to iconv)zlib => undef           # --with-zlib=<path>
};

6. 编译完后,使用install target_dir install_type进行安装

PG16除了可以使用Perl进行项目的构建,还增加了meson进行项目的构建

PG17以及之后,就只能使用meson进行项目的构建(src/tools/msvc目录已经没有了)

meson构建项目步骤

1. 安装meson,具体安装查看帮助

2. 进入到PG源码的根目录下,执行

 meson setup build --prefix=targetdir --buildtype=debug|release -Dssl=openssl 

 (类似./configure --prefix=targetdir --with-openssl --enable-debug)

3. cd build

3. ninja 进行编译(默认使用gcc进行编译,因为Strawberry Perl 带着 gcc和g++编译器)

4.ninja install 安装

5. 也可以使用vs进行编译,方法如下

1. mesa setup build_debug --backend=vs2022 --prefix=targetdir --buildtype=debug -Dssl=openssl  //编译debug版本

2. cd build

(arcgispro-py3) D:\info\postgresql\postgresql-17.5\build>meson compile
INFO: autodetecting backend as vs2022
INFO: calculating backend command to run: msbuild D:\info\postgresql\postgresql-17.5\build\postgresql.sln -maxCpuCount -verbosity:minimal
适用于 .NET Framework MSBuild 版本 17.13.19+0d9f5a35a

3. meson compile

4. meson build

http://www.lryc.cn/news/614199.html

相关文章:

  • Flutter多引擎架构下原生通信的模块化封装与性能优化
  • 研发流程管理经验分享
  • Chrome与Firefox浏览器安全运维配置命令大全:从攻防到优化的专业实践
  • 【类与对象(中)】C++类默认成员函数全解析
  • 使用 Grunt 替换 XML 文件中的属性值
  • 50系显卡ubuntu20.04安装显卡驱动,解决gazebo不调用显卡的问题
  • Java文件读写(IO、NIO)
  • HttpURLConnection (JDK原生)和Hutool HTTP工具的区别
  • 浅析线程池工具类Executors
  • ASTM D4169-23版本有哪些实施指南
  • 2025年最新Java后端场景题+八股文合集(100w字面试题总结)
  • [激光原理与应用-176]:测量仪器 - 频谱型 - AI分类与检测相对于传统算法的优缺点分析
  • 零知开源——基于STM32F103RBT6的TDS水质监测仪数据校准和ST7789显示实战教程
  • 【优选算法】BFS解决拓扑排序
  • Rust语言序列化和反序列化vec<u8>,serde库Serialize, Deserialize,bincode库(2025年最新解决方案详细使用)
  • 全面了解svm
  • 海量数据处理问题详解
  • MySQL 正则表达式详细说明
  • [ MySQL 数据库 ] 环境安装配置和使用
  • 零基础深度学习规划路线:从数学公式到AI大模型的系统进阶指南
  • IPC总结
  • 【接口自动化测试】
  • FastAPI的BackgroundTasks如何玩转生产者-消费者模式?
  • 关于 Rust 异步底层实现中 waker 的猜测
  • #C语言——刷题攻略:牛客编程入门训练(六):运算(三)-- 涉及 辗转相除法求最大公约数
  • GPT OSS 双模型上线,百度百舸全面支持快速部署
  • 创建MyBatis-Plus版的后端查询项目
  • SQL Server 2019搭建AlwaysOn高可用集群
  • 模块 PCB 技术在未来通信领域的创新突破方向
  • Cisco 2018-2023年度互联网报告深度解析:数字化转型时代的网络发展趋势与战略洞察