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

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Нет описания правки
(Отмена правки 5891, сделанной участником Voltron (обс.))
 
Строка 1: Строка 1:
{{Статья|Опубликована|tinyows-compile-vce}}
{{Статья|Опубликована|tinyows-compile-vce}}
{{Аннотация|How to build TinyOWS on Windows.}}
{{Аннотация|Как самому собрать TinyOWS в Windows.}}


This tutotial shows how to build latest TinyOWS code (trunk) on Windows XP Professional with Microsoft Visual C++ 2008 Express Edition using dependencies from OSGeo4W.
Это руководство объясняет как собрать текущую версию TinyOWS (т. н. trunk) под Windows XP Professional с помощью Microsoft Visual C++ 2008 Express Edition имея готовые библиотеки OSGeo4W.


=== Preparation ===
=== Подготовка ===


First of all we need to do initial setup of the build environment. This described in appropriate [http://gis-lab.info/qa/build-env-eng.html article].
Сначала необходимо выполнить первичную настройку сборочной среды. Этот процесс подробно описан в соответствующей [http://gis-lab.info/qa/build-env.html статье].


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


Now we have to attend to the dependencies of TinyOWS. We need:  
Теперь нужно позаботиться обо всех зависимостях TinyOWS. Нам потребуются:


# libxml2 (>=2.6.20)
# libxml2 (>=2.6.20)
Строка 17: Строка 17:
# fastcgi
# fastcgi
# Flex
# Flex
# PostgreSQL (with <tt>libpq</tt> include files)
# PostgreSQL (с заголовочными файлами libpq)
# PostGIS (1.5.x or higher)
# PostGIS (1.5.x или старше)


Fortunately all dependecies, except last three items, can be installed with OSGeo4W installer. Choose "Advanced install" and standard directory (<tt>C:\OSGeo4W</tt>). If you install it in another directory be careful and correct all path below.
Все, кроме последних трех пунктов, можно получить при помощи установщика OSGeo4W. В дальнейшем мы предполагаем, что установка выполнена в каталог по умолчанию (<tt>C:\OSGeo4W</tt>). Если это не так, подставляйте свои пути.


Download [http://gnuwin32.sourceforge.net/downlinks/flex.php Flex] and install it in <tt>C:\OSGeo4W</tt>.
Загружаем [http://gnuwin32.sourceforge.net/downlinks/flex.php Flex] и устанавливаем его в <tt>C:\OSGeo4W</tt>.


Unfortunately PostgreSQL and PostGIS are not available in OSGeo4W so download and install [http://www.postgresql.org/download/windows PostgreSQL]. Then using StackBuilder install PostGIS 1.5.0 or higher. If you can't use StackBuilder there is a standalone PostGIS [http://postgis.refractions.net/download/windows/ installer].
В составе 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/ установщика].


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


Download and install [http://subversion.apache.org/packages.html#windows Subversion]. Add <tt>subversion</tt> directory to the PATH environment variable.
Загрузите и установите клиент для [http://subversion.apache.org/packages.html#windows Subversion]. Добавьте каталог <tt>subversion</tt> к переменной PATH.


Create directory for TinyOWS sources. Go to "Start Run" and enter <tt>cmd</tt>, then go to directory created on previous step and checkout TinyOWS sources:
Создайте папку, в которой будет находиться код 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>


=== Building and installation ===
=== Сборка и установка ===


Assuming that PostgreSQL installed in default directory <tt>C:\Program Files\PostgreSQL\9.0</tt> and TinyOWS sources are in <tt>D:\devel\cpp\tinyows</tt> directory.
Далее предполагается, что PostgreSQL установлен в каталог по умолчанию <tt>C:\Program Files\PostgreSQL\9.0</tt>, а исходный код TinyOWS находится в каталоге <tt>D:\devel\cpp\tinyows</tt>. Если вы выполняли установку или загружали код в другой каталог, вносите необходимые изменения там, где это необходимо.


Go to TinyOWS sources directory and edit <tt>nmake.opt</tt> file:
Переходим в созданный на предыдущем шаге каталог с исходными кодами TinyOWS, открываем в текстовом редакторе файл <tt>nmake.opt</tt> и начинаем редактировать:


<ol>
<ol>
   <li>find variable TINY_BASE (string 36) and point it to sources directory<br>
   <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>find POSTGIS_DIR variable (string 102) and point it to the PostgreSQL
   <li>при желании изменяем  переменную BINDIR (строка 46). Путь, указанный
   installation directory (quotes are important!)<br>
  в этой переменной определяет расположение скомпилированного 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>enter path to libxml and iconv files (strings 112 and 125)<br>
   <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>setup regex location in string 143<br>
   <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>strings 183 and 185 should looks like<br>
   <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>


Save edits and close editor.
Сохраняем изменения и закрываем редактор.


Edit file <tt>D:\devel\cpp\tinyows\Makefile.vc</tt>. At the end of the string 19 add <tt>C:\OSGeo4W\lib\libfcgi.lib</tt>, so string should look like this
Редактируем файл <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>


Edit <tt>D:\devel\cpp\tinyows\src\ows_define.h.in</tt>. String 27 should be
Открываем файл <tt>D:\devel\cpp\tinyows\src\ows_define.h.in</tt>. Строку 27 приводим к виду


<pre>#if TINYOWS_DEBUG</pre>
<pre>#if TINYOWS_DEBUG</pre>


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


<pre>#define TINYOWS_FCGI                1</pre>
<pre>#define TINYOWS_FCGI                1</pre>


If you don't want FastCGI support replace 1 with 0. '''IMPORTANT'''! Without FastCGI you get low performance.
Если поддержка FastCGI не нужна, вместо 1 поставьте 0. '''ВАЖНО'''! Отсутствие поддержки FastCGI отрицательно скажется на производительности.


Now edit file <tt>C:\OSGeo4W\include\regex-0.12\regex.c</tt>. Replace strings 4876-4880
Теперь надо отредактировать файл <tt>C:\OSGeo4W\include\regex-0.12\regex.c</tt>. Открываем его в текстовом редакторе, и строки 4876-4880


<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
Строка 82: Строка 89:
</syntaxhighlight>
</syntaxhighlight>


with the single string:
заменям следующей строкой


<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
Строка 88: Строка 95:
</syntaxhighlight>
</syntaxhighlight>


That's all, now we are ready to compile. Open Visual Studio command prompt from "Start Programs → Microsoft Visual C++ 2008 Express Edition → Visual Studio Tools → Visual Studio 2008 Command Prompt". Go to the TinyOWS source dir and run
Подготовка окончена, переходим к компиляции. Откройте командную строку 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>


Process take a while, when it's done <tt>tinyows.exe</tt> (server application) and <tt>tiny.lib</tt> (library file) should appear in the sources directory.
Если компиляция завершится без ошибок, то корне каталога с исходным кодом появятся файлы <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-eng.html Preparing to build GIS software using Visual C++ Express Edition 2008 and OSGeo4W components]
* [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. Нам потребуются:

  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-сервера.

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