- Титульная страница
- Описания

# Сборка GDAL из исходных текстов

## Сборка в среде Unix

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

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

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

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

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

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

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

- Процесс сборки разделяемой библиотеки в сильной степени определяется набором инструментов 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 обычно подходит команда c++ -shared -all.

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

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

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

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

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

## Сборка в среде Windows

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

    C:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT

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

    C:\GDAL> nmake /f makefile.vc

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

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

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

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

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

### Основные параметры

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

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

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

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

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

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

### Дополнительные параметры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## Внешние библиотеки

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

- Библиотека NCSA HDF. Может быть скачана с домашней страницы NCSA HDF в Национальном центре суперкомпьютерных приложений.

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

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

      #   define MAX_FILE   32

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

- Поддержка JPEG2000 основывается на библиотеке JasPer, доступной на своей домашней странице.

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

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

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

- Поддержка формата NetCDF требует библиотеку netCDF. После сборки и установки этой библиотеки используйте параметр "--with-netcdf=<path to install tree>" для конфигурирования GDAL. При одновременном использовании библиотек netCDF и HDF могут возникнуть конфликты связывания, поэтому такое использование может оказаться невозможным. Поддержка NetCDF не собиралась и не тестировалась в среде Windows.

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

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

Информацию о поддержке больших файлов в Windows можно найти на страницах MSDN. Вкратце: максимальный размер файла на NTFS ограничен (2^64 - 1) байтами, на FAT32 и FAT16 это (2^32 - 1) байт. Поэтому не пытайтесь создавать файлы, большие, чем 4 GiB на FAT32. В некоторых случаях вы даже не получите сообщения об ошибке при переходе за барьер в 4GiB, и ваши данные будут потеряны. Это не ошибка в GDAL, это проблема Windows.

Generated for GDAL by 1.4.5.