Компиляция TinyOWS в Visual C++ Express Edition 2008

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

Подготовка

Сначала необходимо настроить сборочную среду. За основу возьмем руководстве Florian Hillen.

Установка Microsoft Visual C++ 2008 Express

Скачиваем веб-установщик Microsoft Visual C++ 2008 Express: http://www.microsoft.com/express/download. Там же можно загрузить ISO образ со всеми необходимыми компонентами.

Устанавливаем все кроме MSDN и SQL Server, их устанавливать не обязательно. Если вы устанавливали Visual C++ 2008 Express Edition не из файла ISO, то при первом запуске VSC++ EE попросит зарегистрировать продукт. Это делается бесплатно с помощью Windows Live ID, который потребуется создать.

Установка Microsoft Platform SDK for Windows Server 2003 R2

Скачиваем веб-установщик Microsoft Platform SDK for Windows Server 2003 R2: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb

В зависимости от используемой системы, выберите нужный файл:

  • PSDK-amd64.exe
  • PSDK-ia64.exe
  • PSDK-x86.exe

Установку выполняем в папку по умолчанию и выбираем следующие опции:

Configuration Options
  + Register Environmental Variables (Yes)
Microsoft Windows Core SDK
  + Tools (Yes)
    + Tools (AMD 64 Bit) (No, если это не ваша платформа)
    + Tools (Intel 64 Bit) (No, если это не ваша платформа)
  + Build Environment
    + Build Environment (AMD 64 Bit) (No, если это не ваша платформа)
    + Build Environment (Intel 64 Bit) (No, если это не ваша платформа)
    + Build Environment (x86 32 Bit) (Yes)
  + Documentation (No)
  + Redistributable Components (Yes)
  + Sample Code (No)
  + Source Code (No)
    + AMD 64 Source (No)
    + Intel 64 Source (No)
Microsoft Web Workshop (Yes)
  + Build Environment (Yes)
  + Documentation (No)
  + Sample Code (No)
  + Tools (No)
Microsoft Internet Information Server (IIS) SDK (No)
Microsoft Data Access Services (MDAC) SDK (Yes) 
  + Tools
    + Tools (AMD 64 Bit) (No)
    + Tools (AMD 64 Bit) (No)
    + Tools (x86 32 Bit) (Yes)
  + Build Environment
    + Tools (AMD 64 Bit) (No)
    + Tools (AMD 64 Bit) (No)
    + Tools (x86 32 Bit) (Yes)
  + Documentation (No)
  + Sample Code (No)
Microsodt Installer SDK (No)
Microsoft Table PC SDK (No)
Microsoft Windows Management Instrumentation (No)
Microsoft DirectShow SDK (No)
Microsoft Media Services SDK (No)
Debuggin Tools for Windows (Yes)

Более новую версию SDK — Windows SDK for Windows Server 2008 and .NET Framework 3.5, устанавливать не рекомендуется. В дальнейшем будем исходить из того, что установлен Windows Server® 2003 R2 Platform SDK.

Настройка Visual Studio

Запустите Microsoft Visual C++ Express и установите следующие пути в «Tools → Options → Projects and Solutions → VC++ Directories» (Важно! Здесь и далее предполагается, что установка компонент OSGeo4W будет выполняться в каталог по умолчанию C:\OSGeo4W. Если это не так — вносите соответствующие изменения):

Executable files

c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin

Include files

C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\mfc

Library files

c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib\

Закрываем Microsoft Visual C++ Express и переходим в папку C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools

Открываем файл vsvars32.bat и добавляем следующие пути к строкам, начинающимся с @set:

@set PATH=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin;%PATH%
@set INCLUDE=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include;%INCLUDE%
@set INCLUDE=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\mfc;%INCLUDE%
@set LIB=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;%LIB%
@set LIB=%LIB%;C:\OSGeo4W\lib

Также проверяем существование следующих переменных окружения и их значения:

INCLUDE

C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\.

LIB

C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib\.

LIB_DIR

C:\OSGeo4W

PATH

C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\.;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\WinNT\.;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools;C:\OSGeo4W\bin

На этом подготовка сборочной среды окончена.

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

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

  • libxml2 (>=2.6.20)
  • iconv
  • regex
  • fastcgi
  • Flex
  • PostgreSQL (с заголовочными файлами libpq)
  • PostGIS (>=1.5.0)

Всё, кроме последних трех пунктов, можно получить при помощи установщика 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 (обратите внимaние на кавычки!)
      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-сервера.

Мітки: ,

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*