This is an old revision of the document!


Compilando o TerraOGC no Linux

Variáveis de ambiente

Antes de compilar o TerraOGC, é necessário ajustar algumas variáveis de ambiente, normalmente no arquivo ~.bashrc. Coloque neste arquivo a seguinte configuração:

# TerraLib Devel
TERRALIB_DIR=/home/emerson/projetos/terralib
 
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TERRALIB_DIR/terralibx/Release
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TERRALIB_DIR/extensions/terramanager/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TERRALIB_DIR/../terraogc/lib
 
export LD_LIBRARY_PATH

Troque a variável TERRALIB_DIR pelo valor usado no seu sistema. Antes de usar essas configurações você precisa abrir um novo terminal para que as alterações tenham efeito.

Só lembrar que o uso de LD_LIBRARY_PATH é para ambientes de programação. Em ambientes de produção é melhor deixar as libs em pastas reconhecidas pelo linker. Mais detalhes neste artigo ou este.

TerraLib debug

Caso queira usar a TerraLib no modo Debug, troque a linha:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TERRALIB_DIR/terralibx/Release

por:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TERRALIB_DIR/terralibx/Debug

Configurando o QMake

TerraLib 3.2.1 e anteriores

Antes da TerraLib 3.3.0, a biblioteca TIFF usava o nome libtiff para linkar com o sistema. Isso gerava um conflito com a libtiff do sistema. Em consequência faz-se necessário, para versões anteriores da TerraLib corrigir alguns arquivos.

Os projetos TerraOGC forma adaptados para a versão 3.3.0 da TerraLib. Caso queira compilar nas versões anteriores basta trocar as linhas abaixo nos arquivos terraOGC/build/linux/*cgi/*.pro.

De:

LIBS += -L../../../../../terralibx/lib -lterralibtiff

Para:

LIBS += -L../../../../../terralibx/lib -ltiff

Mandriva 2007 x86

  • No Mandriva, precisa alterar o arquivo /usr/lib/qt3/mkspecs/linux-g++/qmake.conf, tirando o /usr/lib da linkagem. Troque as linhas
    QMAKE_LIBDIR_X11	= /usr/lib
    QMAKE_LIBDIR_OPENGL	= /usr/lib

    por

    QMAKE_LIBDIR_X11	= 
    QMAKE_LIBDIR_OPENGL	= 

OpenSuse 11.0 x86_64

  • No OpenSuse 11.0 precisa alterar o arquivo /usr/lib/qt3/mkspecs/default/qmake.conf, tirando o /usr/lib da linkagem. Troque as linhas
    QMAKE_LIBDIR            = /usr/lib64/
    QMAKE_LIBDIR_OPENGL     = /usr/lib64/

    por

    QMAKE_LIBDIR  	        = 
    QMAKE_LIBDIR_OPENGL	= 

Outras distros

CentOS 5.2 x86

O CentOS não configura o /usr/include por padrão quando usando o QMake. Para consertar edite o arquivo /usr/lib/qt-3.3/mkspecs/linux-g++/qmake.conf.

De:

QMAKE_INCDIR            =

Para:

QMAKE_INCDIR            = /usr/include

GCC 4

O GCC (GNU C Compiler) em sua versão 4 e posteriores está adotando características do C++0x (versão ainda não homologada pela ISO). Em consequência, vários warnings começaram a aparecer na compilação. Você pode encontrar algo nos links: Referência e manual

Dependências

Alguns pacotes necessários para compilar e usar o TerraOGC. Os nomes podem variar de distro para distro. Aqui seguem os do Mandriva:

  • GD (criação de imagens)
  • ZLib (compactação)
  • PostgreSQL (SGBD)
  • Apache (Web Server)
  • Apache Xerces (API XML) >= 2.8.0
  • cURL (API Web Client)
  • LibZip (API p/ PKZip): Algumas distros não têm. Então baixe aqui.

Mandriva

  • GD: libgd2, libgd2-devel
  • ZLib: zlib1, zlib1-devel
  • PostgreSQL: postgresql, postgresql-devel, postgresql-contrib, postgresql-plpgsql, postgresql-server
  • Apache: apache-base, apache-conf
  • Apache Xerces: libxerces-c0, libxerces-c0-devel
  • cURL: libcurl4, libcurl-devel
  • LibZip: libzip, libzip1-devel

OpenSUSE

  • GD: gd, gd-devel
  • ZLib: zlib, zlib-devel
  • PostgreSQL: postgresql, postgresql-devel, postgresql-contrib, postgresql-server
  • Apache: apache2
  • Apache Xerces: Xerces-c, libXerces-c-devel
  • cURL: libcurl4, libcurl-devel
  • LibZip: libzip1 e libzip-devel

11.2

  • libqt4-devel: para obter o QMake

CentOS

  • GD: gd e gd-devel
  • ZLib: zlib e zlib-devel
  • PostgreSQL: postgresql, postgresql-libs, postgresql-server, postgresql-contrib, postgresql-pl, postgresql-devel
  • Apache: httpd
  • Apache Xerces: Só encontrei pacotes ⇐ 2.7.0. Para gerar os pacotes:
    1. Baixe a versão 2.8.0 do site
    2. Para criar os pacotes use o comando:
      # rpmbuild -ta xerces-c-src_2_8_0.tar.gz 
    3. Instale os pacotes xerces-c e xerces-c-devel
  • cURL: curl e curl-devel
  • LibZip:
    1. Baixe a última versão do site
    2. Descompacte e entre no diretório
    3. Siga os procedimentos normais de instalação (./configure, make, su, make install)
    4. O default é instalar tudo no /usr/local/, inclusive o zip.h
  • Extras: glibc-headers para código em C

Debian 5

  • GD: libgd2-xpm, libgd2-xpm-dev
  • ZLib: zlib1g, zlib1g-dev
  • PostgreSQL: postgresql, postgresql-client, postgresql-contrib, libpq5, libpq-dev
  • Apache: apache2
  • Apache Xerces: libxerces-c28, libxerces-c2-dev
  • cURL: libcurl3, libcurl4-openssl-dev
  • LibZip: libzip1, libzip-dev

Projeto all

  • Vá para a pasta terraOGC/build/linux/all
  • Execute o QMake e em seguida o Make da seguinte forma:
    qmake TE_DATABASE_OPTION="$1" TE_PROJECT_TYPE="$2"
    make
  • Substitua $1 e $2 de acordo com a tabela abaixo:
Opção $1        ^         $2
SGBD MySQL HAS_MYSQL
SGBD PostgreSQL HAS_POSTGRESQL
SGBD MySQL e PostgreSQL HAS_MYSQL HAS_POSTGRESQL
Versão release RELEASE (default)
Versão debug DEBUG
  • Os projetos da TerraLib e do TerraManager serão compilados também (se ainda não foram)
  • Para gerar o Makefile apenas para o TerraOGC, adicione mais um parâmetro na chamada do qmake:
qmake TE_DATABASE_OPTION="$1" TE_PROJECT_TYPE="$2" ONLY_TEOGC=1
  • Este flag é útil para desenvolvimento, quando é necessário um rebuild-all no projeto (make clean && make), mas sem precisar compilar a TerraLib e o TerraManager novamente.

Exemplos

  1. Para compilar o TerraOGC com suporte a PostgreSQL e na versão release:
    qmake TE_DATABASE_OPTION="HAS_POSTGRESQL"
  2. Para compilar o TerraOGC com suporte a PostgreSQL e MySQL na versão debug
    qmake TE_DATABASE_OPTION="HAS_POSTGRESQL HAS_MYSQL" TE_PROJECT_TYPE="DEBUG"
  3. Para compilar o TerraOGC com suporte a PostgreSQL na versão release, mas sem precisar compilar a TerraLib (já está feito)
    qmake TE_DATABASE_OPTION="HAS_POSTGRESQL" ONLY_TEOGC=1

Navigation