Сборка TinyOWS используя Visual C++ Express Edition 2008 и компоненты OSGeo4W

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/tinyows-compile-vce.html


Как самому собрать TinyOWS в Windows.

Это руководство объясняет как собрать текущую версию TinyOWS (т. н. trunk) под Windows XP Professional с помощью Microsoft Visual C++ 2008 Express Edition имея готовые библиотеки OSGeo4W.

Подготовка

Сначала необходимо выполнить первичную настройку сборочной среды. Этот процесс подробно описан в соответствующей статье.

Ключевые зависимости

Теперь нужно позаботиться обо всех зависимостях TinyOWS. Нам потребуются:

  1. libxml2 (>=2.6.20)
  2. iconv
  3. regex
  4. fastcgi
  5. Flex
  6. PostgreSQL (с заголовочными файлами libpq)
  7. PostGIS (1.5.x или старше)

Все, кроме последних трех пунктов, можно получить при помощи установщика OSGeo4W. В дальнейшем мы предполагаем, что установка выполнена в каталог по умолчанию (C:\OSGeo4W). Если это не так, подставляйте свои пути.

Загружаем Flex и устанавливаем его в C:\OSGeo4W.

В составе OSGeo4W есть только клиентская библиотека PostgreSQL — libpq, поэтому загружаем и устанавливаем PostgreSQL нужной версии (например, 9.0.4). Затем, при помощи StackBuilder устанавливаем PostGIS 1.5.0 или более новую. Если по каким-либо причинам воспользоваться StackBuilder'ом не получается, установить PostGIS можно при помощи установщика.

Получение кода TinyOWS

Загрузите и установите клиент для Subversion. Добавьте каталог subversion к переменной PATH.

Создайте папку, в которой будет находиться код TinyOWS. Выполните «Пуск → Выполнить» и введите cmd, после чего перейдите в созданную папку и получите исходный код TinyOWS с помощью следующей команды:

svn co http://www.tinyows.org/svn/tinyows/trunk

Сборка и установка

Далее предполагается, что PostgreSQL установлен в каталог по умолчанию C:\Program Files\PostgreSQL\9.0, а исходный код TinyOWS находится в каталоге D:\devel\cpp\tinyows. Если вы выполняли установку или загружали код в другой каталог, вносите необходимые изменения там, где это необходимо.

Переходим в созданный на предыдущем шаге каталог с исходными кодами TinyOWS, открываем в текстовом редакторе файл nmake.opt и начинаем редактировать:

  1. находим переменную TINY_BASE (в нашем случае это строка 36) и указываем путь в каталогу исходных кодов TinyOWS
    TINY_BASE = D:\devel\cpp\tinyows
  2. при желании изменяем переменную BINDIR (строка 46). Путь, указанный в этой переменной определяет расположение скомпилированного TinyOWS после выполнения команды nmake /f Makefile.vc install
    BINDIR = $(TINY_BASE)\bin
  3. находим переменную POSTGIS_DIR (строка 102) и указываем путь к установленной PostgreSQL (обратите внимение на кавычки!)
    POSTGIS_DIR ="c:\Program Files\PostgreSQL\9.0"
  4. указываем каталог с файлами libxml и iconv (строки 112 и 125). Так как эти библиотеки мы установили при помощи OSGeo4W, то каталог будет один и тот же
    LIBXML_DIR=c:\OSGeo4W
    ICONV_DIR=c:\OSGeo4W
  5. в строке 143 задается расположение файлов библиотеки regex
    REGEX_DIR=c:\OSGeo4W\include\regex-0.12
  6. строки 183 и 185 приводятся к виду
    POSTGIS_INC=-I"c:\Program Files\PostgreSQL\9.0\lib\libpq" -I"c:\Program Files\PostgreSQL\9.0\include"
    POSTGIS_LIB="c:\Program Files\PostgreSQL\9.0\lib\libpq.lib"

Сохраняем изменения и закрываем редактор.

Редактируем файл D:\devel\cpp\tinyows\Makefile.vc. В конец строки 19 добавляем C:\OSGeo4W\lib\libfcgi.lib, т.е. после редактирования она должна выглядеть так

CFLAGS=$(BASE_CFLAGS) $(TINY_CFLAGS) c:\OSGeo4W\lib\libfcgi.lib

Открываем файл D:\devel\cpp\tinyows\src\ows_define.h.in. Строку 27 приводим к виду

#if TINYOWS_DEBUG

Строка 32 должна выглядеть так

#define TINYOWS_FCGI                1

Если поддержка FastCGI не нужна, вместо 1 поставьте 0. ВАЖНО! Отсутствие поддержки FastCGI отрицательно скажется на производительности.

Теперь надо отредактировать файл C:\OSGeo4W\include\regex-0.12\regex.c. Открываем его в текстовом редакторе, и строки 4876-4880

regerror (errcode, preg, errbuf, errbuf_size)
    int errcode;
    const regex_t *preg;
    char *errbuf;
    size_t errbuf_size;

заменям следующей строкой

regerror (int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size)

Подготовка окончена, переходим к компиляции. Откройте командную строку Visual Studio выполнив «Пуск → Программы → Microsoft Visual C++ 2008 Express Edition → Visual Studio Tools → Visual Studio 2008 Command Prompt». Перейдите в каталог с исходным кодом TinyOWS и выполните:

nmake /f Makefile.vc

Если компиляция завершится без ошибок, то корне каталога с исходным кодом появятся файлы tinyows.exe (сам сервер) и tiny.lib (библиотечный файл). Файл tinyows.exe необходимо скопировать в каталог cgi-bin web-сервера.

Ссылки по теме