Сборка TinyOWS используя Visual C++ Express Edition 2008 и компоненты OSGeo4W: различия между версиями
Voltron (обсуждение | вклад) Нет описания правки |
Voltron (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{Статья|Опубликована|tinyows-compile-vce}} | {{Статья|Опубликована|tinyows-compile-vce}} | ||
{{Аннотация| | {{Аннотация|Как самому собрать TinyOWS в Windows.}} | ||
Это руководство объясняет как собрать текущую версию TinyOWS (т. н. trunk) под Windows XP Professional с помощью Microsoft Visual C++ 2008 Express Edition имея готовые библиотеки OSGeo4W. | |||
=== | === Подготовка === | ||
Сначала необходимо выполнить первичную настройку сборочной среды. Этот процесс подробно описан в соответствующей [http://gis-lab.info/qa/build-env.html статье]. | |||
=== | === Ключевые зависимости === | ||
Теперь нужно позаботиться обо всех зависимостях TinyOWS. Нам потребуются: | |||
# libxml2 (>=2.6.20) | # libxml2 (>=2.6.20) | ||
Строка 17: | Строка 17: | ||
# fastcgi | # fastcgi | ||
# Flex | # Flex | ||
# PostgreSQL ( | # PostgreSQL (с заголовочными файлами libpq) | ||
# PostGIS (1.5.x | # PostGIS (1.5.x или старше) | ||
Все, кроме последних трех пунктов, можно получить при помощи установщика OSGeo4W. В дальнейшем мы предполагаем, что установка выполнена в каталог по умолчанию (<tt>C:\OSGeo4W</tt>). Если это не так, подставляйте свои пути. | |||
Загружаем [http://gnuwin32.sourceforge.net/downlinks/flex.php Flex] и устанавливаем его в <tt>C:\OSGeo4W</tt>. | |||
В составе OSGeo4W есть только клиентская библиотека PostgreSQL — libpq, поэтому загружаем и устанавливаем [http://www.postgresql.org/download/windows PostgreSQL] нужной версии (например, 9.0.4). Затем, при помощи StackBuilder устанавливаем PostGIS 1.5.0 или более новую. Если по каким-либо причинам воспользоваться StackBuilder'ом не получается, установить PostGIS можно при помощи [http://postgis.refractions.net/download/windows/ установщика]. | |||
=== | === Получение кода TinyOWS === | ||
Загрузите и установите клиент для [http://subversion.apache.org/packages.html#windows Subversion]. Добавьте каталог <tt>subversion</tt> к переменной PATH. | |||
Создайте папку, в которой будет находиться код TinyOWS. Выполните «Пуск → Выполнить» и введите <tt>cmd</tt>, после чего перейдите в созданную папку и получите исходный код TinyOWS с помощью следующей команды: | |||
<pre>svn co http://www.tinyows.org/svn/tinyows/trunk</pre> | <pre>svn co http://www.tinyows.org/svn/tinyows/trunk</pre> | ||
=== | === Сборка и установка === | ||
Далее предполагается, что PostgreSQL установлен в каталог по умолчанию <tt>C:\Program Files\PostgreSQL\9.0</tt>, а исходный код TinyOWS находится в каталоге <tt>D:\devel\cpp\tinyows</tt>. Если вы выполняли установку или загружали код в другой каталог, вносите необходимые изменения там, где это необходимо. | |||
Переходим в созданный на предыдущем шаге каталог с исходными кодами TinyOWS, открываем в текстовом редакторе файл <tt>nmake.opt</tt> и начинаем редактировать: | |||
<ol> | <ol> | ||
<li> | <li>находим переменную TINY_BASE (в нашем случае это строка 36) и указываем | ||
путь в каталогу исходных кодов TinyOWS<br> | |||
<pre>TINY_BASE = D:\devel\cpp\tinyows</pre></li> | <pre>TINY_BASE = D:\devel\cpp\tinyows</pre></li> | ||
<li> | <li>при желании изменяем переменную BINDIR (строка 46). Путь, указанный | ||
в этой переменной определяет расположение скомпилированного TinyOWS | |||
после выполнения команды nmake /f Makefile.vc install<br> | |||
<pre>BINDIR = $(TINY_BASE)\bin</pre></li> | |||
<li>находим переменную POSTGIS_DIR (строка 102) и указываем путь к | |||
установленной PostgreSQL (обратите внимение на кавычки!)<br> | |||
<pre>POSTGIS_DIR ="c:\Program Files\PostgreSQL\9.0"</pre></li> | <pre>POSTGIS_DIR ="c:\Program Files\PostgreSQL\9.0"</pre></li> | ||
<li> | <li>указываем каталог с файлами libxml и iconv (строки 112 и 125). Так | ||
как эти библиотеки мы установили при помощи OSGeo4W, то каталог будет | |||
один и тот же<br> | |||
<pre>LIBXML_DIR=c:\OSGeo4W | <pre>LIBXML_DIR=c:\OSGeo4W | ||
ICONV_DIR=c:\OSGeo4W</pre></li> | ICONV_DIR=c:\OSGeo4W</pre></li> | ||
<li> | <li>в строке 143 задается расположение файлов библиотеки regex<br> | ||
<pre>REGEX_DIR=c:\OSGeo4W\include\regex-0.12</pre></li> | <pre>REGEX_DIR=c:\OSGeo4W\include\regex-0.12</pre></li> | ||
<li> | <li>строки 183 и 185 приводятся к виду<br> | ||
<pre>POSTGIS_INC=-I"c:\Program Files\PostgreSQL\9.0\lib\libpq" -I"c:\Program Files\PostgreSQL\9.0\include" | <pre>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"</pre></li> | POSTGIS_LIB="c:\Program Files\PostgreSQL\9.0\lib\libpq.lib"</pre></li> | ||
</ol> | </ol> | ||
Сохраняем изменения и закрываем редактор. | |||
Редактируем файл <tt>D:\devel\cpp\tinyows\Makefile.vc</tt>. В конец строки 19 добавляем <tt>C:\OSGeo4W\lib\libfcgi.lib</tt>, т.е. после редактирования она должна выглядеть так | |||
<pre>CFLAGS=$(BASE_CFLAGS) $(TINY_CFLAGS) c:\OSGeo4W\lib\libfcgi.lib</pre> | <pre>CFLAGS=$(BASE_CFLAGS) $(TINY_CFLAGS) c:\OSGeo4W\lib\libfcgi.lib</pre> | ||
Открываем файл <tt>D:\devel\cpp\tinyows\src\ows_define.h.in</tt>. Строку 27 приводим к виду | |||
<pre>#if TINYOWS_DEBUG</pre> | <pre>#if TINYOWS_DEBUG</pre> | ||
Строка 32 должна выглядеть так | |||
<pre>#define TINYOWS_FCGI 1</pre> | <pre>#define TINYOWS_FCGI 1</pre> | ||
Если поддержка FastCGI не нужна, вместо 1 поставьте 0. '''ВАЖНО'''! Отсутствие поддержки FastCGI отрицательно скажется на производительности. | |||
Теперь надо отредактировать файл <tt>C:\OSGeo4W\include\regex-0.12\regex.c</tt>. Открываем его в текстовом редакторе, и строки 4876-4880 | |||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
Строка 82: | Строка 89: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
заменям следующей строкой | |||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
Строка 88: | Строка 95: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Подготовка окончена, переходим к компиляции. Откройте командную строку Visual Studio выполнив «Пуск → Программы → Microsoft Visual C++ 2008 Express Edition → Visual Studio Tools → Visual Studio 2008 Command Prompt». Перейдите в каталог с исходным кодом TinyOWS и выполните: | |||
<syntaxhighlight lang="dos"> | <syntaxhighlight lang="dos"> | ||
Строка 94: | Строка 101: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Если компиляция завершится без ошибок, то корне каталога с исходным кодом появятся файлы <tt>tinyows.exe</tt> (сам сервер) и <tt>tiny.lib</tt> (библиотечный файл). Файл <tt>tinyows.exe</tt> необходимо скопировать в каталог <tt>cgi-bin</tt> web-сервера. | |||
=== Ссылки по теме === | === Ссылки по теме === | ||
* [http://tinyows.org/trac TinyOWS Project] | * [http://tinyows.org/trac TinyOWS Project] | ||
* [http://gis-lab.info/qa/build-env | * [http://gis-lab.info/qa/build-env.html Подготовка к компиляции ПО ГИС используя Visual C++ Express Edition 2008 и компоненты OSGeo4W] | ||
* [http://gis-lab.info/qa/gdal-compile.html Сборка GDAL используя Visual C++ Express Edition 2008] | * [http://gis-lab.info/qa/gdal-compile.html Сборка GDAL используя Visual C++ Express Edition 2008] | ||
* [http://gis-lab.info/qa/qgis-compile-vce.html Сборка QGIS используя Visual C++ Express Edition 2008 и компоненты OSGeo4W] | * [http://gis-lab.info/qa/qgis-compile-vce.html Сборка QGIS используя Visual C++ Express Edition 2008 и компоненты OSGeo4W] |
Текущая версия от 12:26, 21 июля 2012
по адресу 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-сервера.