#ifndef DOXYGEN_SKIP
/*
$Id: gdal_building_ru.dox 8777 2005-11-09 14:57:08Z dron $
Translation corresponds to gdal_building.dox,v 1.3 2005/11/08 22:34:07
Translator Andrey Kiselev <dron@remotesensing.org>
*/
#endif /* DOXYGEN_SKIP */

/*!
\page gdal_building_ru Сборка GDAL из исходных текстов

\section gdal_building_unix_ru Сборка в среде Unix

Библиотека GDAL успешно собирается в системах Linux, IRIX, Solaris, BSD, и
MacOS X. На Unix-платформах вы можете скомпилировать её следующим способом
(предполагается, что исходные тексты распакованы или взяты из CVS модуля
<b>gdal</b>):

<pre>
% cd gdal
% ./configure
% make
% su
Password: ********
# make install
# exit
</pre>

Для того, чтобы запустить GDAL после установки, необходимо сделать разделяемую
библиотеку известной динамическому загрузчику. Обычно этого можно достичь,
включив в значение переменной окружения LD_LIBRARY_PATH путь
/usr/local/lib.<p>

Обратите внимание на следующие особенности:<p>
<ul>

<li> Для сборки на платформе Unix необходима утилита GNU make. Скачайте и
установите её, если она отсутствует в вашей системе.<p>

<li> GDAL не требует большого числа дополнительных пакетов. Она включает в себя
исходные тексты библиотек libz, libtiff, libgeotiff, libpng, libgif, и
libjpeg, которые могут быть использованы, если отсутствуют их предустановленные
версии (либо их использование нежелательно).  

<li> Некоторые драйверы зависят от
\ref gdal_building_libraries_ru "внешних библиотек".
Команда <i>configure --help</i> выводит список параметров сборки, в том числе
параметры для указания путей к внешним библиотекам, применяемым для работы с
форматами GRASS, FITS, OGDI, HDF4, JPEG2000, ECW и т.п.

<li> Процесс сборки разделяемой библиотеки в сильной степени определяется
набором инструментов GNU. Если вы используете что-то иное, чем GNU C++, то
скорее всего окажется, что файлы .so не будут правильно собраны. В этом случае
можно попробовать связывать приложение со статическими библиотеками (обычно
gdal/gdal.a gdal/ogr/ogr.a  gdal/frmts/o/ *.a gdal/gdal.a gdal/port/cpl.a),
либо изменить команду LD_SHARED в файле gdal/GDALmake.opt так, чтобы она
работала на вашей платформе. Например, для платформ SGI обычно подходит
команда <i>c++ -shared -all</i>.<p>

<li> И GDAL, и включённые в поставку утилиты должны нормально собираться в
среде Cygwin и на платформах, где разделяемые библиотеки не поддерживаются.
Однако для сборки ваших собственных приложений требуется связывание с более
широким набором библиотек. Команда <i>gdal-config --libs</i> выведет требуемый
список библиотек.

<li> Логика "autoconf", проверяющая наличие libtiff, libpng и libjpeg
недостаточно хорошо тестирует версии этих библиотек. Если вы используете
предустановленные библиотеки и они не работают, перезапустите скрипт
<i>configure</i> с параметрами "--with-png=internal", "--with-jpeg=internal",
"--with-geotiff=internal" или "--with-libtiff=internal". <p>

<li> Для сборки на IRIX скорее всего понадобится вручную исправить файл
GDALmake.opt, получающийся в результате запуска <i>configure</i> и заменить
"ld -shared" на "ld -shared -all".<p>

<li> Если при сборке вы обнаружите проблемы с одним из драйверов для формата,
который вам не нужен, то просто удалите его из списка GDAL_FORMATS в конце
файла gdal/GDALmake.opt, сделайте <i>make clean</i> и затем <i>make</i>. Это
исключит его из процесса компиляции и использования после запуска.<p>

<li> При инсталляции без прав суперпользователя (в ваше собственный каталог,
указанный параметром --prefix), то вы скорее всего получите проблемы с
модулями для языка Python, поскольку они всегда пытаются установиться в
каталог site-packages в дереве Python. Если поддержка Python вам не нужна, то
вы можете отключить её на этапе конфигурирования с помощью параметра
--without-python, либо указать доступный для записи каталог с помощью
параметра --with-pymodir=&lt;directory&gt;. Модули Python будут установлены
туда.

</ul>

\section gdal_building_win_ru Сборка в среде Windows

В среде Windows GDAL можно собрать с помощью компиляторов MS VC++ 6.x или MS
Visual Studio .NET (C++) из командной строки. Для этого вам обычно следует
запустить скрипт VCVAR32.BAT, который устанавливается вместе в компилятором.
Для MSVC 6.x он может быть расположен в

<pre>
C:\\Program Files\\Microsoft Visual Studio\\VC98\\bin\\VCVARS32.BAT
</pre>

Как только все переменные окружения будут установлены, можно переходить в корневой каталог GDAL и запускать следующую команду:<p>

<pre>
C:\\GDAL> nmake /f makefile.vc
</pre>

После успешного завершения сборки можно установить все необходимые для
функционирования GDAL файлы, используя цель install мейкфайла. Перед
этим убедитесь, что переменные BINDIR и DATADIR в файле <i>nmake.opt</i>
установлены в подходящие для вас значения:<p>

<pre>
C:\\GDAL> nmake /f makefile.vc install
</pre>

Если вы собираетесь применять GDAL в ваших собственных приложениях, то можно
использовать следующую команду для установки всех необходимых библиотек и
заголовочных файлов. Убедитесь, что в файле <i>nmake.opt</i> переменные LIBDIR
и INCDIR установлены в подходящие для вас значения.

<pre>
C:\\GDAL> nmake /f makefile.vc devinstall
</pre>

Проекты, собираемые с GDAL, должны включать каталог, заданный в переменной
INCDIR, в список путей для поиска заголовочных файлов, а каталог, заданный в
LIBDIR в список /LIBPATH. Связываться следует с библиотекой импорта
<i>gdal_i.lib</i>.  

\subsection gdal_building_win_basic Основные параметры

Файл <i>nmake.opt</i>, расположенный в корневом каталоге GDAL, содержит
большое количество параметров, которые могут быть настроены вручную:<p>  

<ul>
<li> <b>BINDIR</b>: Каталог, в который будут установлены исполняемые файлы и
разделяемые библиотеки при выполнение команды "nmake /f makefile.vc install".

<li> <b>LIBDIR</b>: Каталог, в который будет установлена библиотека импорта
gdal_i.lib.

<li> <b>INCDIR</b>: Каталог, в который будут установлены заголовочные файлы
GDAL/OGR.

<li> <b>DATADIR</b>: Каталог, в который будут установлены необходимые файлы
данных.

<li> <b>OPTFLAGS</b>: Эта переменная должна содержать флаги компилятора,
которые следует применить при сборке GDAL. По умолчанию используется сборка с
отладочной информацией, а флаги для оптимизированной окончательной сборки
закомментированы. Пожалуйста, обратите внимание на то, что если вы будете
собирать GDAL с использованием дополнительных библиотек (установленных из
бинарных пакетов, либо собранных вами ранее), вам необходимо использовать
одинаковые параметры сборки для этих библиотек и для GDAL. Например, если вы
используете флаг /MD в строке <b>OPTFLAGS</b> (связывание с многопоточной
разделяемой стандартной библиотекой), то тот же самый флаг должен быть
использован при компиляции других библиотек, таких, как HDF4 и JasPer. Если у
вас нет исходных текстов дополнительных библиотек, то прочитайте
документацию, поставляемую вместе с ними, для того, чтобы выяснить, как она
была скомпилирована и какие флаги вам следует выставить в строке
<b>OPTFLAGS</b>. Смешивание различных параметров компиляции или флагов
оптимизации/отладки приведёт к ошибкам при сборке или к падениям после запуска
на исполнение.

</ul>

\subsection gdal_building_win_advanced_ru Дополнительные параметры

<ul>

<li> <b>PY_INST_DIR</b>: Каталог, в который будут устанавливаться модули
поддержки языка Python. Необходим только в случае, если эта поддержка
включена. 

<li> <b>PYDIR</b>: Каталог, в который установлено дерево Python. Используется
для для поиска заголовочных файлов Python. Если эта переменная указывает на
несуществующий каталог, то тогда поддержка Python будет выключена.

<li> <b>DLLBUILD</b>: Установите эту переменную в значение "1", чтобы
заставить утилиты OGR связываться с разделяемой библиотекой GDAL, а не
компилироваться статически.

<li> <b>INCLUDE_OGR_FRMTS</b>: Установите эту переменную в значение "YES",
чтобы включить сборку библиотеки OGR, либо закомментируйте её, для исключения
OGR из сборки.

<li> <b>SETARGV</b>: Путь к файлу <i>setargv.obj</i> из поставки Visual
Studio. Включите эту переменную, если вы хотите получить раскрытие
метасимволов в аргументах командной строки. Если вам это не требуется,
оставьте параметр закомментированным.

<li> <b>ECWDIR/ECWLIB</b>: Раскомментируйте эти параметры для включения
поддержки ECW. ECWDIR должна указывать на каталог, в котором установлены
библиотеки ECW.

<li> <b>OGDIDIR/OGDIVER/OGDILIB</b>: Раскомментируйте эти параметры для
включения поддержки OGDI, отредактировав OGDIDIR и OGDIVER в соответствии с
вашей системой.

<li> <b>HDF4_DIR</b>: Раскомментируйте и отредактируйте эту переменную для
включения поддержки NCSA HDF Release 4. 

<li> <b>JASPER_DIR/JASPER_INCLUDE/JASPER_LIB</b>: Эти переменные указывают на
каталоги, в которые установлены компоненты библиотеки JasPer. Эта библиотека
необходима для поддержки формата JPEG2000.

<li> <b>XERCES_DIR/XERCES_INCLUDE/XERCES_LIB</b>: Раскомментируйте и
отредактируйте переменную XERCES_DIR для включения поддержки XML-анализатора
Xerces при чтении файлов в формате GML.

<li> <b>FME_DIR</b>: Раскомментируйте и отредактируйте эту переменную для
включения поддержки векторного формата FMEObject. 

<li> <b>JPEG_EXTERNAL_LIB/JPEGDIR/JPEG_LIB</b>: Эти переменные используются
для связывания GDAL с внешней библиотекой JPEG (по умолчанию будет
скомпилирована встроенная библиотека). Раскомментируйте их и отредактируйте
пути.

<li> <b>PNG_EXTERNAL_LIB/PNGDIR/PNG_LIB</b>: Эти переменные используются
для связывания GDAL с внешней библиотекой PNG (по умолчанию будет
скомпилирована встроенная библиотека). Раскомментируйте их и отредактируйте
пути.

</ul>

При добавлении новых компонентов я часто забываю обновить мейкфайлы для
Windows, поэтому если при сборке что-то не найдено, попробуйте сравнить списки
файлов в соответствующем makefile.vc со списками в GNUmakefile, либо просто
сообщите об этом мне.<p>

\section gdal_building_libraries_ru Внешние библиотеки

Некоторые драйверы требуют установки на вашу систему следующих дополнительных
библиотек:

<ul>
<li> Библиотека NCSA HDF. Может быть скачана с
<a href="http://hdf.ncsa.uiuc.edu/">домашней страницы NCSA HDF</a> в
<a href="http://www.ncsa.uiuc.edu/"> Национальном центре суперкомпьютерных
приложений</a>.<p>

Если в поставку вашей операционной системы уже входит библиотека HDF, то вы
можете использовать её.<p>

Обратите  внимание на то, что библиотека NCSA HDF собрана с целым рядом
параметров, определённых в файле <i>hlimits.h</i>. В
частности,<i>hlimits.h</i> определяет максимальное число открытых файлов:

<pre>
#   define MAX_FILE   32
</pre>

Если вам нужно открывать одновременно большее число файлов в формате HDF4, то
это значение следует изменить и перекомпилировать библиотеку HDF4 (при этом
нет необходимости в пересборке GDAL, если она уже собрана с поддержкой
разделяемой библиотеки HDF4).

<li> Поддержка JPEG2000 основывается на библиотеке JasPer, доступной на своей
<a href="http://www.ece.uvic.ca/~mdadams/jasper/"> домашней странице</a>.<p>

Сама по себе библиотека JasPer является транслятором между несколькими
растровыми форматами файлов. GDAL использует только форматы JP2 и JPC.<p>

Если вы хотите получить поддержку расширения GeoJP2, то вам потребуется
модифицированная библиотека JasPer, которая может быть скачана отсюда:
<a href="ftp://ftp.remotesensing.org/gdal/jasper-1.701.0.uuid.tar.gz">
ftp://ftp.remotesensing.org/gdal/jasper-1.701.0.uuid.tar.gz</a>

<li> Драйвер формата MrSID требует декодирующую библиотеку LizardTech (DSDK).
Это не свободное программное обеспечение, однако оно бесплатно доступно на
сайте <a href="http://developer.lizardtech.com/">
http://developer.lizardtech.com/</a>. Если вы хотите создавать файлы в формате
MrSID, вам потребуется кодирующая библиотека (ESDK). Свяжитесь с
представителями компании <a href="http://www.lizardtech.com">LizardTech</a>
для выяснения условий её получения. Библиотеки MrSID распространяются в
бинарном виде и, если вы используете GCC, убедитесь, что применяется тот же
самый компилятор, который был использован для сборки SDK. Данная библиотека
написана на C++, поэтому вы можете получить несовместимость в схеме именования
символов при использовании различных версий GCC (2.95.x and 3.x).

<li> Поддержка формата NetCDF требует 
<a href="http://www.unidata.ucar.edu/packages/netcdf/">библиотеку netCDF</a>.
После сборки и установки этой библиотеки используйте параметр
"--with-netcdf=<path to install tree>" для конфигурирования GDAL. При
одновременном использовании библиотек netCDF и HDF могут возникнуть конфликты
связывания, поэтому такое использование может оказаться невозможным. Поддержка
NetCDF не собиралась и не тестировалась в среде Windows.<p>

</ul>

\section gdal_building_lfs_ru Поддержка больших файлов

GDAL поддерживает чтение и запись больших файлов (> 2GiB), если это возможно в
вашей операционной системе. Информацию о поддержке больших файлов в системе
Linux можно получить здесь: <a href="http://www.suse.de/~aj/linux_lfs.html">
http://www.suse.de/~aj/linux_lfs.html</a>. Вкратце: если вы работаете с ядром
2.4.x и glibc 2.2.x, то проблем быть не должно. Максимальный размер файла
зависит от размера кластера файловой системы. Для файловой системы ext2 с
кластером в 1 KiB это 16448 MiB, для ext2 с кластером 4 KiB это 2048 GiB.
Другие файловые системы могут работать с файлами даже большего размера.<p>

Информацию о поддержке больших файлов в Windows можно найти на страницах
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/supported_file_systems.asp">MSDN</a>.
Вкратце: максимальный размер файла на NTFS ограничен (2^64 - 1) байтами, на
FAT32 и FAT16 это (2^32 - 1) байт. Поэтому не пытайтесь создавать файлы,
большие, чем 4 GiB на FAT32. В некоторых случаях вы даже не получите сообщения
об ошибке при переходе за барьер в 4GiB, и ваши данные будут потеряны. Это не
ошибка в GDAL, это проблема Windows.<p>

*/
