Сборка TinyOWS используя Visual C++ Express Edition 2008 и компоненты OSGeo4W
по адресу http://gis-lab.info/qa/tinyows-compile-vce.html
Как самому собрать TinyOWS в Windows.
Это руководство объясняет как собрать текущую версию TinyOWS (т. н. trunk) под Windows XP Professional с помощью Microsoft Visual C++ 2008 Express Edition имея готовые библиотеки OSGeo4W.
Подготовка
Сначала необходимо выполнить первичную настройку сборочной среды. Этот процесс подробно описан в соответствующей статье.
Ключевые зависимости
Теперь нужно позаботиться обо всех зависимостях TinyOWS. Нам потребуются:
- libxml2 (>=2.6.20)
- iconv
- regex
- fastcgi
- Flex
- PostgreSQL (с заголовочными файлами libpq)
- 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 и начинаем редактировать:
- находим переменную TINY_BASE (в нашем случае это строка 36) и указываем
путь в каталогу исходных кодов TinyOWS
TINY_BASE = D:\devel\cpp\tinyows
- при желании изменяем переменную BINDIR (строка 46). Путь, указанный
в этой переменной определяет расположение скомпилированного TinyOWS
после выполнения команды nmake /f Makefile.vc install
BINDIR = $(TINY_BASE)\bin
- находим переменную POSTGIS_DIR (строка 102) и указываем путь к
установленной PostgreSQL (обратите внимение на кавычки!)
POSTGIS_DIR ="c:\Program Files\PostgreSQL\9.0"
- указываем каталог с файлами libxml и iconv (строки 112 и 125). Так
как эти библиотеки мы установили при помощи OSGeo4W, то каталог будет
один и тот же
LIBXML_DIR=c:\OSGeo4W ICONV_DIR=c:\OSGeo4W
- в строке 143 задается расположение файлов библиотеки regex
REGEX_DIR=c:\OSGeo4W\include\regex-0.12
- строки 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-сервера.