Сборка с помощью Visual C++ или Platform SDK

16.1. Сборка с помощью Visual C++ или Platform SDK

PostgreSQL может быть собран с помощью компилятора Visual C++ от Microsoft. Этот компилятор есть в пакетах Visual Studio, Visual Studio Express или в некоторых версиях Platform SDK. Если у вас ещё не установлен пакет Visual Studio, наиболее простой способ состоит в использовании Platform SDK, который можно бесплатно скачать с сайта Microsoft.

PostgreSQL поддерживает компиляторы с Visual Studio 2005 до Visual Studio 2008. При использовании только Platform SDK или при сборке 64-битной версии для Windows, поддерживается только Visual Studio 2008. Visual Studio 2010 пока не поддерживается.

При сборке с помощью Platform SDK, поддеживаются версии SDK от 6.0 до 7.0. Более старые или более новые версии работать не будут. В частности, не будут работать версии начиная с 7.0a и более поздние, потому что они включают компилятор из Visual Studio 2010.

Инструменты для компиляции с помощью Visual C++, находятся в каталоге src/tools/msvc. При компиляции, убедитесь, что в системном пути PATH нет инструментов из набора MinGW или Cygwin. Также убедитесь, что у все инструменты, которые тербует Visual C++, доступны через пути, указанные в PATH. В Visual Studio, запустите Visual Studio Command Prompt. В Platform SDK, запустите CMD shell, который есть в стартовом меню SDK. Если вы хотите собрать 64-битную версию, вы должны использовать 64-битную версию данной команды и наоборот. Все команды должны запускаться из каталога src\tools\msvc.

Перед тем как начать сборку, вам может понадобится отредактировать файл config.pl, чтобы отразить в нём какие-либо конфигурационные опции, которые вы хотите изменить или пути к сторонним библиотекам, которые вы хотите использовать. Полная конфигурация определяется так: сперва читается и обрабатывается файл config_default.pl, а затем применяются все изменения config.pl. Например, чтобы задать местоположение вашей установки Python, добавьте в config.pl следующее:

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

Вам нужно только задать те параметры, которые отличаются от тех, что заданы в config_default.pl.

Если вам необходимо установить какие-либо другие переменные окружения, создайте файл с именем buildenv.pl и поместите в него требуемые команды. Например, чтобы добавить путь к bison, которого нет в PATH, создайте в файл содержащий:

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

16.1.1. Требования

PostgreSQL будет компилироваться, как Professional (любой редакции), так и Express версией Visual Studio 2005. Для сборки PostgreSQL также требуются нижеперечисленные дополнительные продукты. Используйте файл config.pl, чтобы указать каталоги доступных библиотек.

Microsoft Platform SDK

Рекомендуется, чтобы вы обновились до последней поддерживаемой версии Microsoft Platform SDK (в настоящий момент это 7.0), которая доступна к скачиванию с http://www.microsoft.com/downloads/.

Вы всегда должны включать часть SDK, которая называется Windows Headers and Libraries. Если вы установили Platform SDK, включая Visual C++ Compilers, вам не нужен пакет Visual Studio для сборки.

ActiveState Perl

ActiveState Perl требуется для запуска скриптов генерирующих процесс компиляции. MinGW или Cygwin Perl работать не будут. ActiveState Perl также должен быть в PATH. Вы можете скачать этот пакет с http://www.activestate.com (Обратите внимание: требуется версия 5.8 или выше, Standard Distribution успешно работает.)

Следующие дополнительные продукты не являются необходимыми для работы, но требуются для сборки полного пакета. Используйте файл config.pl, чтобы указать каталоги с библиотеками.

ActiveState TCL

Требуется для компиляции PL/TCL (Обратите внимание: требуется версия 8.4, Standard Distribution успешно работает).

Bison and Flex

Для компиляции из Git требуются Bison и Flex, но они не нужны, при компиляции из архива подготовленного выпуска. Обратите внимание, что будет работать только Bison 1.875 или версий 2.2 и выше. Также требуется Flex версии 2.5.31 или выше. Bison можно скачать с http://gnuwin32.sourceforge.net. Flex можно скачать с http://www.postgresql.org/ftp/misc/winflex/.

Note: Дистрибутив Bison из GnuWin32 содержит ошибку, которая заставляет Bison работать неправильно, когда он устанавлен в каталог с именем, содержащим пробелы, такой как каталог для установки по умолчанию C:\Program Files\GnuWin32. Решить проблему можно, если установить его в C:\GnuWin32 вместо каталога по умолчанию.

Diff

Diff требуется для запуска регрессионных тестов и может быть скачен с http://gnuwin32.sourceforge.net.

Gettext

Gettext требуется для сборки поддержки NLS и может быть скачен с http://gnuwin32.sourceforge.net. Обратите внимание, что необходимы бинарные пакеты и все файлы, необходимые для их работы, а также файлы для разработки.

MIT Kerberos

Требуется для поддержки авторизации Kerberos. MIT Kerberos можно скачать с http://web.mit.edu/Kerberos/dist/index.html.

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 (только для contrib). Исходники могут быть скачены с http://www.ossp.org/pkg/lib/uuid/.

Python

Требуется для компиляции PL/Python. Бинарные пакеты могут быть скачены с http://www.python.org.

zlib

Требуется для поддержки сжатия в pg_dump и pg_restore. Бинарные пакеты могут быть скачены с http://www.zlib.net.

16.1.2. Специальные замечания для 64-битной версии Windows

PostgreSQL для архитектуры x64 может быть собран только на 64-битной версии Windows, не существует поддержки для процессоров Itanium.

Смешанные 32- и 64-битные версии в одном и том же дереве сборки не поддерживаются. Система сборки автоматически определит в каком 32- или 64-битном окружении она запущена и осуществит сборку PostgreSQL в соответствии с ним. По этой причине, важно перед сборкой запускать правильный командный интерпретатор.

Для использования на стороне сервера сторонних библиотек, таких как python или openssl, эти библиотеки также должны быть 64-битными. В 64-битном сервере не существует поддержки для загрузки 32-битных библиотек. Некоторые библиотеки стороних разработчиком, поддерживаемые PostgreSQL, могут быть доступны только в 32-битных версиях и в этом случае они не могут быть использованы в 64-битной версии PostgreSQL.

16.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 (в корневом каталоге дерева исходных текстов).

16.1.4. Очистка и установка

В большинстве случаев, отслеживать изменённые файлы будет автоматическая система отслеживания зависимостей в Visual Studio. Но, если изменений было слишком много, вам может понадобится очистка установки. Чтобы её выполнить, просто запустите команду clean.bat, которая автоматически очистит все сгенерированные файлы. Вы также можете запустить эту команду с параметром dist, в этом случае это будет подобно make distclean и удалит также и файлы, созданные flex/bison.

По умолчанию, все файлы сохраняются в подкаталогах debug или release. Чтобы установить эти файлы, используя стандартные средства, а также сгенерировать файлы, требуемые для инициализации и использования база данных, запустите команду:

install c:\destination\directory

16.1.5. Запуск регрессионных тестов

Чтобы запустить регрессионные тесты, убедитесь сперва, что вы выполнили компиляцию всех требуемых частей. Также, убедитесь, что все DLL требуемые для загрузке всех частей СУБД (такие как DLL для процедурных языков Perl и Python) находятся в системном пути. Если их там нет, укажите пути к ним в файле buildenv.pl. Чтобы запустить тесты, запустите одну из следующих команд из каталога src\tools\msvc:

vcregress check
vcregress installcheck
vcregress plcheck
vcregress contribcheck

Чтобы изменить используемый планировщик выполнения тестов (по умолчанию параллельный), добавьте желаемый планировщик в командную строку:

vcregress check serial

Больше информации о регрессионных тестов можно получить в Chapter 30.

16.1.6. Компиляция документации

Компиляция документации PostgreSQL в HTML формат требует некоторых инструментов и файлов. Создайте корневой каталог для всех этих файлов и сохраните их в подкаталоги как перечислено ниже.

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.

DocBook DSSSL 1.79

Скачайте с http://sourceforge.net/projects/docbook/files/docbook-dsssl/1.79/docbook-dsssl-1.79.zip/download и распакуйте в подкаталог docbook-dsssl-1.79.

ISO character entities

Скачайте с http://www.oasis-open.org/cover/ISOEnts.zip and и распакуйте в подкаталог docbook.

Измените файл buildenv.pl и добавьте переменную, указывающую местоположение вышеуказанного корневого каталога, например:

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

Чтобы скомпилировать документаци, запустите команду builddoc.bat. Обратите внимание, что эта команда фактически запустит компиляцию дважды для генерации индексов. Сгенерированные HTML файлы будут в каталоге doc\src\sgml.

Back to top

(С) Виктор Вислобоков, 2008-2023